我正在尝试将节点数据分配给上下文菜单变量中的临时变量
addToTable:{
// The "aggregate" menu item
label: "Show in table",
"seperator_before": false,
"seperator_after": true,
action: function(obj) {
tempNode = new Object();
tempNode.id = node.id;
tempNode.original = node.original;
//tempNode = jQuery_1_11('#ajax').jstree(true).get_node(node);
node.original.metadata.repeatme = true;
jQuery_1_11("#ajax").trigger("changed.jstree", {});
// or jQuery_1_11("#ajax").trigger("changed.jstree", node);
// or jQuery_1_11("#ajax").trigger("changed.jstree", tempNode );
}
},
触发后,如果我使用如下
tempNode.original.metadata.sort_no = 2;
它也会改变" sort_no"原始节点的属性。
我不希望更改原始节点数据。
提前致谢。
答案 0 :(得分:0)
这是因为在Javascript中你可以pass by value or reference。因此,使用tempNode.original = node.original
,您将分配对node.original
的引用,而不是创建新对象。这样做有另外一个discussion但是根据您正在处理的环境(节点,浏览器等),有可用的库来帮助解决这个问题。