将节点数据分配给另一个变量jstree

时间:2015-04-08 13:15:50

标签: javascript jstree

我正在尝试将节点数据分配给上下文菜单变量中的临时变量

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"原始节点的属性。

我不希望更改原始节点数据。

提前致谢。

1 个答案:

答案 0 :(得分:0)

这是因为在Javascript中你可以pass by value or reference。因此,使用tempNode.original = node.original,您将分配对node.original的引用,而不是创建新对象。这样做有另外一个discussion但是根据您正在处理的环境(节点,浏览器等),有可用的库来帮助解决这个问题。