次のコードがあります。
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 の最新バージョンです。