【问题标题】:JSTree creating duplicate nodes when loading data with create_nodeJSTree在使用create_node加载数据时创建重复节点
【发布时间】:2014-11-27 00:27:53
【问题描述】:

我在尝试为 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 中会导致这种行为的原因是什么?除了 create_node 之外,我还应该使用其他方法来创建初始节点吗?

提前致谢。

【问题讨论】:

    标签: jstree


    【解决方案1】:

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

    【讨论】:

    • 请您解释一下您的答案,因为我在将树从一页复制到另一页时遇到问题:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多