2011-01-18 4 views
0

Мое приложение имеет вложенное дерево в viewModel на клиенте. У меня есть jquery templating для каждого элемента дерева, и он рекурсивный, если у него есть treeitemGroup. Таким образом, объект JSON отправляется клиенту с сервера выглядит так,ChangeTracking, создавая коллекцию дельты на стороне клиента перед отправкой на сервер

MvvmTree 
- MvvmTreeItemGroup1 
---- MvvmTreeItemGroup11 
-------- MvvmTreeItem { Title: MyTitle, IsChecked: true } 
-------- MvvmTreeItem ... so forth.. 
-------- MvvmTreeItem ... so forth.. 
-------- MvvmTreeItem ... so forth.. 
---- MvvmTreeItem{ Title: MyTitle2, IsChecked: false } 
---- MvvmTreeItem 
---- MvvmTreeItem 
---- MvvmTreeItem 
- MvvmTreeItemGroup2 
---- MvvmTreeItemGroup21 
-------- MvvmTreeItem 
-------- MvvmTreeItem 
-------- MvvmTreeItem 
-------- MvvmTreeItem 
---- MvvmTreeItem 
---- MvvmTreeItem 
---- MvvmTreeItem 
---- MvvmTreeItem 

Мои TreeItemTemplate выглядит так,

<script type="text/x-jquery-tmpl" id="mvvmTreeViewGroupTemplate"> 
<li> 
    <span data-bind="text: Title" class="mvvmTreeItemStyle"/></br/> 

    <ul data-bind='template: { 
          name: "mvvmTreeViewItemTemplate", 
          foreach: MvvmTreeItems 
          }'> 
    </ul> 

    <ul data-bind='template: { 
          name: "mvvmTreeViewGroupTemplate", 
          foreach: MvvmTreeItemGroups 
          }'> 
    </ul> 
</li> 
</script> 
<script type="text/x-jquery-tmpl" id="mvvmTreeViewItemTemplate"> 
<li> 
    <input type="checkbox" data-bind="checked: IsChecked" class="checkboxStyle"/> <span data-bind="text: Title" class="mvvmTreeItemStyle"/> (Id: <span data-bind="text: Id" class="mvvmTreeItemStyle"/>)</br/> 
</li> 
</script> 

Теперь мне нужно, чтобы иметь возможность отслеживать изменения в IsChecked собственности на каждый TreeItem, привязанный к каждому флажку. После того, как пользователь проверит набор TreeItems, будет нажата отдельная кнопка, которая должна будет отправить дельтам в виде массива объектов MvvmTreeItem [] json (только изменения, которые произошли на клиенте с статусами флажка) на сервер.

До сих пор мое исследование предполагает, что я должен переопределить проверенный по умолчанию checkHandler из knockoutjs с моим собственным и обработать событие, нажимая элементы в массив на стороне клиента, но с трудностью визуализировать, как это сделать.

Будут оценены любые образцы указателей/образцов.

ответ

0

Я сделал хороший прогресс с помощью от прекрасных людей более в Google group for Knockoutjs как @green и @mkidder (спасибо ребята)

Я до сих пор вижу несколько проблем (упоминается в потоке), и надеемся найти ответы.

Это не будет достаточно ясно, если вы не проверить JSFiddle

http://jsfiddle.net/VinKamat/M8W3L/

Смежные вопросы