从 jstree 节点清除缓存
Clear cache from jstree node
我想在用户每次打开节点时强制执行 ajax 调用,即无缓存。一点点谷歌搜索建议在用户关闭节点后删除节点的子节点。看起来很简单,但我无法让它工作。
在下面的代码中,after_close 事件实际上被触发了,但是删除子节点的三个语句似乎没有任何效果。我得出这个结论是因为我观察到首次打开节点时 fiddler 中的初始 ajax 调用,但关闭节点并重新打开它不会生成调用。
笔记:
我使用随机数参数来防止在浏览器上缓存。
我已经根据 the documentation.
设置了 'check_callback' 标志
// load the tree
$('#tree').jstree({
'core': {
"themes": { "theme": "classic", "dots": false, "icons": false },
'html_titles': true,
'load_open': true,
'data': {
'url': 'GetChildNodes/',
'data': function (node) {
return { 'id': node.id === '#' ? '0_0' : node.id, 'noCache': Math.random() };
}
},
'check_callback': function () { return true; }
},
"plugins": ["themes", "ui"]
});
// Handles tree view links so that the tree view does not intercept the event.
$("#tree").delegate("a", "click", function (e) {
if ($("#tree").jstree("is_leaf", this)) {
document.location.href = this;
}
else {
$("#tree").jstree("toggle_node", this);
}
});
$('#tree').on('after_close.jstree', function (e, data) {
var tree = $('#tree').jstree(true);
var children = tree.get_children_dom(data);
tree.delete_node(children);
});
使用这个:
$('#tree').on('after_close.jstree', function (e, data) {
var tree = $('#tree').jstree(true);
tree.delete_node(data.node.children);
tree._model.data[data.node.id].state.loaded = false;
});
我想在用户每次打开节点时强制执行 ajax 调用,即无缓存。一点点谷歌搜索建议在用户关闭节点后删除节点的子节点。看起来很简单,但我无法让它工作。
在下面的代码中,after_close 事件实际上被触发了,但是删除子节点的三个语句似乎没有任何效果。我得出这个结论是因为我观察到首次打开节点时 fiddler 中的初始 ajax 调用,但关闭节点并重新打开它不会生成调用。
笔记:
我使用随机数参数来防止在浏览器上缓存。
我已经根据 the documentation.
// load the tree
$('#tree').jstree({
'core': {
"themes": { "theme": "classic", "dots": false, "icons": false },
'html_titles': true,
'load_open': true,
'data': {
'url': 'GetChildNodes/',
'data': function (node) {
return { 'id': node.id === '#' ? '0_0' : node.id, 'noCache': Math.random() };
}
},
'check_callback': function () { return true; }
},
"plugins": ["themes", "ui"]
});
// Handles tree view links so that the tree view does not intercept the event.
$("#tree").delegate("a", "click", function (e) {
if ($("#tree").jstree("is_leaf", this)) {
document.location.href = this;
}
else {
$("#tree").jstree("toggle_node", this);
}
});
$('#tree').on('after_close.jstree', function (e, data) {
var tree = $('#tree').jstree(true);
var children = tree.get_children_dom(data);
tree.delete_node(children);
});
使用这个:
$('#tree').on('after_close.jstree', function (e, data) {
var tree = $('#tree').jstree(true);
tree.delete_node(data.node.children);
tree._model.data[data.node.id].state.loaded = false;
});