У меня есть функция, которая вызывается в $(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]);
}