Changetracking, создавая коллекцию Delta на стороне клиента перед отправкой на сервер
-
12-10-2019 - |
Вопрос
В моем приложении есть вложенное дерево в ViewModel на клиенте. У меня есть шаблон jQuery на каждом предмете дерева, и она рекурсивна, если у нее есть reeamitemgroup. Итак, объект JSON, отправленный клиенту с сервера, выглядит так,
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
Мой reeamitemtemplate выглядит так,
<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>
Теперь мне нужно иметь возможность отслеживать изменения в Проверено свойство на каждом деревне, которая связана с каждым флажком. После того, как пользователь проверит набор TreeItems, будет нажата отдельная кнопка, которая должна будет отправить Deltas в форме массива объектов MVVMTreeitem [] JSON (только изменения, которые произошли в клиенте в статусы флага) на сервер.
До сих пор мое исследование предполагает, что я должен переопределить проверенный по умолчанию привязку nockoutjs с моим собственным и обрабатывать событие, подтолкнув элементы в массив клиента, но испытывая трудности с визуализацией, как это сделать.
Любые указатели / образцы кода будут оценены.
Решение
Я добился хорошего прогресса с помощью прекрасных людей в Google Group для нокаутирования Как @Green и @mkidder (спасибо, ребята)
Я все еще вижу несколько вопросов (упомянутых в ветке) и надеюсь найти ответы.
Это не будет достаточно ясно, если вы не проверьте jsfiddle