我有一个在$(document).ready()
中被调用的函数。您会注意到我在函数中放置了两个调试语句。第一个调试语句在函数顶部获取dragAndDropEnabled
的值。第二条语句在JSON的“内部”属性中获取dragAndDropEnabled
的值,如果向下滚动则将看到该值。
打开网页时,我发现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]);
}