使用create_node加载数据时,JSTree创建重复节点

时间:2014-11-26 12:48:01

标签: jstree

当我尝试加载JSTree的初始数据时,我遇到了问题;我有2个顶级节点连接到根节点,但是当我加载它们时,看起来添加的最后一个节点在JSTree中是重复的。起初看起来好像是我的错,因为每次都没有特别声明一个新对象,但我已经解决了这个问题。我正在使用.net MVC,因此初始数据来自传递给我视图的模型(即传递给方法的data参数的数据)。

this.loadInitialData = function (data) {
    var tree = self.getTree();

    for (var i = 0; i < data.length; i++) {
        var node = new Object();
        node.id = data[i].Id;
        node.parent = data[i].Parent;
        node.text = data[i].Text;
        node.state = {
            opened: data[i].State.Opened,
            disabled: data[i].State.Disabled,
            selected: data[i].State.Selected
        };
        node.li_attr = { "node-type": data[i].NodeType };
        node.children = [];

        for (var j = 0; j < data[i].Children.length; j++) {
            var childNode = new Object();
            childNode.id = data[i].Children[j].Id;
            childNode.parent = data[i].Children[j].Parent;
            childNode.text = data[i].Children[j].Text;
            childNode.li_attr = { "node-type": data[i].Children[j].NodeType };
            childNode.children = data[i].Children[j].HasChildren;

            node.children.push(childNode);
        }

        tree.create_node("#", node, "last");
    }
}

我的初始代码是声明节点,如下所示:

var node = {
    id: data[i].Id
}

我认为这是我所看到的原因,但修复它并没有改变任何东西。以下是我运行应用程序时发生的情况;在方法的第一次传递中,一切看起来都很好。

JSTree on the first pass

但是在循环运行第二次(和最后一次)之后,这是最终结果。

JSTree final result

看起来节点对象只是彼此的副本,但是当我通过调试器运行代码时,我看到每次都要初始化对象。有谁知道在JSTree中会导致这种行为的原因是什么?我应该使用不同的方法来创建除了create_node之外的初始节点吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我发现了这个问题;我没有意识到,但我将我的id属性设置为两个节点组的相同ID。修好后,一切都按预期开始了。