代码之家  ›  专栏  ›  技术社区  ›  Herr Derb

具有静态节点和动态加载节点的JsTree

  •  1
  • Herr Derb  · 技术社区  · 8 年前

    我有一个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/ 这似乎有效。

    在我的例子中,我确实在加载第一个动态数据之前添加了静态节点,并且在收到第一个级别的数据后,它会再次被清除吗?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Herr Derb    8 年前

    有了那个小提琴手,我发现了我的错误。

    我没有 check_callback : true 为树设置的选项。 这样它就如预期的那样工作了。