我正在使用带有来自 JSON 文件的远程数据源的剑道 UI 树。我在树页面上有一个按钮,它获取树的当前数据,通过 POST 将其发送到服务器,服务器将当前数据保存到 JSON 文件,以便下次我重新加载页面时,我所做的更改将被保留。这就是我想要发生的事情。
所以我知道树的当前数据在:
$("#treeview").data("kendoTreeView").dataSource.data()
这意味着数据在那里实时变化,例如当有人拖放树的一个节点时。
我的问题开始于当我在树内拖放节点时这些数据似乎没有改变,并且只有当我将节点拖放到树的根级别时才会改变,即使那样它也不能正确地做到这一点节点也应该移到那里,但是节点被复制,过去的节点也留在树中......
例如,我有这棵树:
如果我像这样进行拖放更改:
我发送数据,保存并重新加载根本没有进行更改!
PS:即使我在发送之前查看更改后的当前数据,我发现数据根本没有更改,即使我通过拖放进行了视觉更改。所以它与发送、保存和服务器。
另一方面,如果我做出这样的改变:
我可以在当前数据中看到移动的节点确实添加到了数据的末尾,但它并没有从它在数据中的初始位置删除!所以如果我将当前数据发送到服务器,保存它然后刷新我得到结果:
查看和发送数据的代码是:
function sendData() {
var req = createRequest();
var putUrl = "rest/hello/treeData";
req.open("post", putUrl, true);
req.setRequestHeader("Content-type","application/json");
var dsdata = $("#treeview").data("kendoTreeView").dataSource.data();
alert(JSON.stringify(dsdata));
req.send(JSON.stringify(dsdata));
req.onreadystatechange = function() {
if (req.readyState != 4) {
return;
}
if (req.status != 200) {
alert("Error: " + req.status);
return;
}
alert("Sent Data Status: " + req.responseText);
}
}
这是一个错误还是我做错了什么?有没有人能够在每次拖放时看到当前数据正确更改?