Почему эта неизменная переменная изменяет значения в одной и той же функции? (Это из-за кеширования?) - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть функция, которая вызывается в $(document).ready().Вы заметите, что я поместил два отладочных оператора в функцию.Первый оператор отладки получает значение dragAndDropEnabled в верхней части функции.Второе утверждение получает значение dragAndDropEnabled в свойстве "inner" JSON, которое вы увидите, если прокрутить вниз.

Когда я открываю веб-страницу, я получаю конфликтующие значения для dragAndDropEnabled.Первый оператор отладки дает Line 41: Update NOT permitted.Но второй оператор отладки дает Line 61: Update permitted.

Почему переменная dragAndDropEnabled принимает два разных значения в одной и той же функции, оставаясь неизменной во всей функции?

Это происходит только тогда, когда яизменить права пользователя, а затем снова открыть мою веб-страницу.Это заставляет меня думать, что extraSettings JSON кэшируется , тогда как функция initialiseTree не кэшируется.Таким образом, первый оператор отладки дает не кэшированное значение dragAndDropEnabled, тогда как второй оператор отладки дает кэшированное значение JSON.

Это мое лучшее предположение относительно того, что происходит.Правильно ли мое предположение (то есть, кэшировано или нет)?Если так, как я могу исправить это поведение?Если нет, что происходит?

var initialiseTree = function(dragAndDropEnabled) {

    $('#debugInfo').append("Line 41: " + (dragAndDropEnabled ? "Update permitted<br/>" : "Update NOT permitted<br/>"));

    var extraSettings = {
        edit: {

            drag: {

                inner: function(treeId, treeNodes, targetNode) {

                    $('#debugInfo').append("Line 61: " + (dragAndDropEnabled ? "Update permitted<br/>" : "Update NOT permitted<br/>"));

                    if (!dragAndDropEnabled)
                        return false;

                    // rest of code omitted
                }
            }
        }
    }

    $.extend(true, settings, extraSettings);

    zTree = $.fn.zTree.init($('#treeDiv'), settings, [rootNode]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...