2015-09-29 3 views
0

мне нужно, чтобы связать ниже 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); 

Шаблон следующим образом

enter image description here

<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> 

Теперь TreeView Colapse и из памяти

если я удалить расширенную собственность от модели, TreeView приходит, но не расширяется до подпунктов.

Как я могу исправить эту проблему?

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

(выше ссылка не является полезным для меня, потому что здесь источник непосредственно в модели собственности не в списке)

ответ

0

Я получил ответ от Telerik

После дальнейших исследований, мы достигли к выводу, что желаемый сценарий не поддерживается. Чтобы объяснить, что происходит в этом случае, мне нужно пролить свет на то, как работает привязка источника MVVM. В основном, он слушает любые изменения, которые происходят в нем (в данном случае в «dynamicFields»). Если он обнаружит изменения, он будет повторно генерировать отображаемый контент, что приведет к повторному созданию TreeView.

Изменение «dynamicFields» происходит от встроенного поведения TreeView для обновления «расширенных» полей его источника. Это действие вызовет изменение, которое выйдет на «dynamicFields», и результатом будет «инфинитивная петля».

Единственным обходным решением в этом случае является не использование привязки источника для TreeView. Проверьте обновленную демоверсию, которая работает: http://dojo.telerik.com/IWAmo