【发布时间】: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