Changetracking, создавая коллекцию Delta на стороне клиента перед отправкой на сервер

StackOverflow https://stackoverflow.com/questions/4726407

Вопрос

В моем приложении есть вложенное дерево в 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

http://jsfiddle.net/vinkamat/m8w3l/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top