Мое приложение имеет вложенное дерево в 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 с моим собственным и обработать событие, нажимая элементы в массив на стороне клиента, но с трудностью визуализировать, как это сделать.
Будут оценены любые образцы указателей/образцов.