Kendo 树视图源绑定

Kendo Tree View source binding

我需要将下面的 Json 绑定到 MVVM

model ={
        "dynamicFields":[
           {
               "name":"A1",
               "type":"LookUp",
               "required":true,
               "list":[
                  {
                      "Id":"f3373d59-27f2-4f4a-b9e4-9fd3ad468d6f",
                      "Name":"FruitItem1",
                      "expanded":false,
                      "items":[

                      ],
                      "IsActive":true
                  },
                  {
                      "Id":"feb67602-5f45-4fcd-857a-a26570144dff",
                      "Name":"FruitItem2",
                      "expanded":true,
                      "items":[
                         {
                             "Id":"16cf25ba-3c8b-4fa2-ad33-aaac242a0fa4",
                             "Name":"FruitItem3",
                             "expanded":false,
                             "items":[ ],
                             "IsActive":true
                         }
                      ],
                      "IsActive":true
                  }
               ],
               "IsMultiSelect":true,
               "IsMultiLevel":true
           }
        ],
        "ResourceId":"6fa1c8ce-98f7-40e6-bdac-f2770b9f4ef4",
        "ProjectId":null
    }

所以我将 Json 转换如下

model.dynamicFields.forEach(function (item) {
        item.list = kendo.observableHierarchy(item.list);
    });

var viewModel = kendo.observable(model);

现在我绑定到模板

kendo.bind($("#customfield"), viewModel);

模板如下

<script id="fieldsTemplate" type="text/x-kendo-template">
<tr>
    <td>
        <div data-role="treeview"
             data-text-field="Name"
             data-bind="source: list"></div>
    </td>
</tr>

现在树视图崩溃并内存不足

如果我从模型中删除扩展的 属性,树视图出现但没有扩展到子项目。

我该如何解决这个问题?

http://demos.telerik.com/kendo-ui/treeview/mvvm

(上面的 link 对我没用,因为这里源直接在模型 属性 中而不是列表)

我从 Telerik 那里得到了答案

经过进一步调查,我们得出的结论是不支持所需的场景。 为了解释这种情况下发生的情况,我需要更清楚地说明 MVVM 源代码绑定的工作原理。基本上,它会监听其中发生的任何变化(在本例中为 "dynamicFields")。如果它检测到变化,那么它将重新生成呈现的内容,这将导致重新创建 TreeView。

"dynamicFields" 中的更改来自内置 TreeView 行为以更新其源的 "expanded" 字段。此操作将触发更改,它将冒泡到 "dynamicFields",结果为 "infinitive loop"。

在这种情况下,唯一的解决方法是不对 TreeView 使用源绑定。检查有效的更新演示: http://dojo.telerik.com/IWAmo