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. プッシュ: ツリー内のノードを選択すると、dataItem を使用して現在のデータ項目を取得し、1 つの追加ノードをそこにプッシュします (子ノード)。dataSource は ObservableHierarchy オブジェクトであるため、これは有効なはずです。2. append: ツリー内のノードを選択すると、append を使用して追加のノード (子ノード) を 1 つ導入します。これは KendoUI の以前のリリースで有効であり、ツリーを変更しましたが、DataSource の変更を反映するべきではありません。

質問/問題は次のとおりです。1.追加を使用すると、ツリーは(視覚的に)更新されますが、dataItemは更新されません。2. プッシュを使用すると、dataItem は更新されますが、ツリーは更新されません。3. ノードを選択し、追加してからプッシュすると、ツリーが視覚的に更新され、モデルも更新されます。

初めて子を導入するappendと内部構造が更新され、そこからツリーを直接プッシュするとツリーは観察可能な階層を「観察」し、ツリーは観察可能な階層を観察しないようです。

ノードを動的に挿入して DataSource をチェックし、ツリーの現在の状態を取得するにはどうすればよいですか?

これは KendoUI Q2.1024 の最新バージョンです。

4

2 に答える 2

1

わかりましたので、この件について 2 日後にチケットで回答を得ました。これは確かに最新のビルドで既に修正されているバグですが、ビルドはアクティブなサブスクリプションをお持ちのお客様のみが利用できます...

次の公式リリース (2013 年 3 月頃) で、残りのコミュニティも利用できるようになります。したがって、現時点で唯一の解決策は、商用サブスクリプションを購入することであり、新しいビルドにすぐにアクセスできます...

これはバグなので、このすべての商業的なものには少しがっかりしています..しかし、とにかく、それについて私たちができることは何もありません..少なくとも、私たちは狂っていないことを知っています. :P

于 2012-11-29T13:03:09.220 に答える
0

追加はデータソースをまったく更新せず、プッシュはデータソースを更新しますが、ノードを初めて追加したときだけ更新するため、現時点では私の問題もあります。データソースを保存するまで、後でそのノードを選択することさえできませんページを更新します(またはpos.items is undifinedエラーが発生します)

これまでのところ、子ノードを dataSource に追加する push メソッドを使用して、選択したノードの子を毎回 dataSource に強制的にロードしようとすることができるかもしれません。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 に答える