我有一个jsTree,当节点被扩展时,它会动态加载节点。这是树的init方法。
function initializeTree(treeSelector, fnId,callback) {
treeSelector.jstree({
plugins: ["types", "wholerow"],
core: {
animation: false,
multiple: false,
themes: {
dots: false
},
data: {
url: userlogicServlet,
data: function (node) {
return {cmd: 'getTreeNode', oid: node.id, fnId: fnId};
}
}
}
}).on("ready.jstree", function () {
callback(treeSelector);
});
}
另外,我想在树的根中添加两个静态节点。由于它们可能不同,我想给出一个函数,它将静态节点添加为回调。一旦树激发“就绪”,回调就会立即执行。意味着加载了第一级数据(我相信这是“就绪”事件被触发时的情况)。
这是一种可能的回调方法,应该在树的顶部添加一个新节点。
_addVariableToTree: function (tree) {
var variableNode = {"id": "addVariableNode", "text": "Add Variable", "type": "Add"};
tree.jstree().create_node( '#', variableNode, "first");
}
遵循jstree文档,这应该是可行的。正如你可以假设的那样。
动态数据被加载,回调被执行,但节点“添加变量”没有被添加。同样,也没有例外发生。
有人有想法或假设吗?这里可能出什么问题?
更新:
我只是试了一下这个小提琴手
http://jsfiddle.net/DGAF4/1200/
这似乎有效。
在我的例子中,我确实在加载第一个动态数据之前添加了静态节点,并且在收到第一个级别的数据后,它会再次被清除吗?