1

我有以下代码:

    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。

4

2 回答 2

1

好的,我在 2 天后才得到关于这件事的票上的答复。这确实是一个已经在最新版本中修复的BUG,但这些版本适用于具有有效订阅的客户...

它将在下一个正式版本(大约 2013 年 3 月)中提供给社区的其他成员。因此,目前唯一的解决方案是购买商业订阅,您将可以立即访问新版本...

对所有这些商业内容有点失望,因为它是一个错误..但无论如何,我们对此无能为力.. 至少我们知道我们并不疯狂,几个月后我们可以用固定版本替换我们的代码。:P

于 2012-11-29T13:03:09.220 回答
0

有点我的问题,因为追加根本不更新数据源,而推送更新数据源,它只在我第一次添加节点时这样做,之后我什至无法选择该节点,直到我保存数据源并刷新页面。(或者我得到一个pos.items is undifined错误)

到目前为止我所知道的是,也许我们可以使用将子节点添加到数据源的 push 方法,并尝试每次通过强制加载数据源中选定节点的子节点treeview.dataSource.get(treeview.select()).load()

根据此处的文档http://docs.kendoui.c​​om/ documentation/api/framework/node

如果我们可以选择节点,我们可以强制加载它的子节点。但到目前为止get我还没有能够拥有datasource.get()或读取所选节点..dataSource.view()[]

PS我知道这不是一个完整的答案,但也许它有帮助..

于 2012-11-14T14:52:38.637 回答