我有以下代码:
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.如果我使用append,树更新(可视),但dataItem不会更新。 2.如果我使用push,则dataItem是更新但不是树。 3.如果我选择一个节点,使用append然后按,树会在视觉上更新,模型也是。
似乎我第一次引入一个子append
更新了一些内部结构,并且从那里树'观察'如果我直接推送它就可观察到的层次结构,那么树就不会观察到可观察的层次结构。
如何动态插入节点以检查DataSource并获取树的当前状态?
注意这是最新版本的KendoUI Q2.1024。
答案 0 :(得分:1)
好的,我在2天后得到了关于此事的罚单。 确实是 BUG 已在最新版本中修复,但构建仅 可供有效订阅的客户使用...
它将在下一个正式版本(2013年3月左右)中供社区其他人使用。所以目前唯一的解决方案是购买商业订阅,您将立即获得新版本......
有点失望所有这些商业资料,因为这是一个错误 ..但无论如何,我们无能为力...... 至少我们知道我们并不疯狂,几个月后我们可以用固定版本替换我们的代码。 :P
答案 1 :(得分:0)
有点我的问题,因为append根本不更新dataSource,而push更新dataSource,它只在我第一次添加节点时这样做,我甚至不能选择那个节点,直到我保存dataSource并刷新页面。(或者我得到pos.items is undifined
错误)
到目前为止我的意思是,我们可以使用push方法将child-node添加到dataSource,并尝试每次通过treeview.dataSource.get(treeview.select()).load()
根据此处的文件http://docs.kendoui.com/documentation/api/framework/node
如果我们可以get
选定的节点,我们可以强行加载它的子节点。但到目前为止,我还无法让datasource.get()
或dataSource.view()[]
读取所选节点。 / p>
PS我知道这不是一个完整的答案,但也许有帮助..