我在项目中使用jstree,最近发布了有关如何使用拖放界面动态添加更多节点到我的树的方法。原帖(以及优秀的答案)在这里:Is it possible to drag and drop external data into a jstree?
我现在需要将此数据保存到数据库中。我的想法是我可以简单地使用$('#tree').data("jstree");
来获取数据的JSON表示。例如:
data = $('#tree').data("jstree");
console.log(JSON.stringify(data.settings.core.data));
这个问题是它只会给我页面加载时的数据。如果我动态地向树中添加其他节点,则该数据不会出现在console.log
中显示的JSON中。
例如 - https://jsfiddle.net/Twisty/dLv7xk3t/ - 我有以下数据在页面加载时进入我的树:
var exData = [{
id: "loc1",
parent: "#",
text: "Location 1"
}, {
id: "loc2",
parent: "#",
text: "Location 2"
}, {
id: "italy-1",
parent: "loc2",
text: "Italy",
icon: "fa fa-flag"
}, {
id: "poland-1",
parent: "loc2",
text: "Poland",
icon: "fa fa-flag"
}];
因此console.log
输出如下。这是正确的,因为它表示页面加载时显示的完整树:
[{"id":"loc1","parent":"#","text":"Location 1"},{"id":"loc2","parent":"#","text":"Location 2"},{"id":"italy-1","parent":"loc2","text":"Italy","icon":"fa fa-flag"},{"id":"poland-1","parent":"loc2","text":"Poland","icon":"fa fa-flag"}]
但是......如果我然后将标签拖到我的树中(例如'英国'位于'位置1'):
重新运行我的console.log
声明......它不会改变输出:
[{"id":"loc1","parent":"#","text":"Location 1"},{"id":"loc2","parent":"#","text":"Location 2"},{"id":"italy-1","parent":"loc2","text":"Italy","icon":"fa fa-flag"},{"id":"poland-1","parent":"loc2","text":"Poland","icon":"fa fa-flag"}]
如何获取自页面加载以来动态添加到树中的数据的JSON表示?
我希望它能在JSON中占据一席之地,因为它代表了英国'它出现在哪里:
{id:"uk-1_anchor", parent: "loc1", text: "United Kingdom"}