我有以下代码:
var cnt = 0;
$(document).ready(function () {
var data = [
{
"id": cnt++,
"text":"node_" + cnt
}
];
var tree = $("#treeview").kendoTreeView({
dataSource:kendo.observableHierarchy(data)
}).data("kendoTreeView");
$("#push").click(function () {
var pos = tree.dataItem(tree.select());
pos.items.push({id:cnt++, text:"node_" + cnt});
});
$("#append").click(function () {
var pos = tree.select();
tree.append({id:cnt++, text:"node_" + cnt}, pos);
});
$("#show").click(function () {
var data = tree.dataItem(".k-item:first");
$("#content").html(JSON.stringify(data, null, 2));
});
});
并且有两个功能: 1. push:在树中选择一个节点后,它使用 dataItem 获取当前数据项并将一个附加节点(子节点)推入其中。这应该是有效的,因为 dataSource 是一个 ObservableHierarchy 对象。2. append:一旦在树中选择了一个节点,它就会使用 append 向其中引入一个额外的节点(子节点)。这在 KendoUI 的先前版本中有效,并且修改了树,但不应反映 DataSource 中的更改。
问题/问题是: 1. 如果我使用追加树是更新(视觉上),但 dataItem 没有更新。2. 如果我使用推送,那么 dataItem 是更新的,而不是树。3. 如果我选择一个节点,使用追加然后推送,树和模型都会在视觉上更新。
似乎我第一次引入孩子时会append
更新一些内部结构,然后从那里“观察”树“观察”可观察的层次结构,如果我直接推送它,那么树就不会观察到可观察的层次结构。
我应该如何动态插入节点以检查数据源并获取树的当前状态?
注意这是最新版本的 KendoUI Q2.1024。