Присвоить данные узла другой переменной 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 ответ
Это потому, что в Javascript вы можете передавать по значению или ссылке. Итак, с tempNode.original = node.original
вы назначаете ссылку на node.original
а не создание нового объекта. Существует целая другая дискуссия о том, как это сделать, но в зависимости от среды, в которой вы работаете (Node, браузеры и т. Д.), Существуют библиотеки, которые могут помочь с этим.