ChangeTracking, создание дельта-коллекции на стороне клиента перед отправкой на сервер - PullRequest
0 голосов
/ 18 января 2011

Мое приложение имеет вложенное дерево в viewModel на клиенте.У меня есть шаблон JQuery для каждого элемента дерева, и это рекурсивно, если у него есть treeitemGroup.Таким образом, объект 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

Мой 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 (только те изменения, которые произошли на клиенте в статусы флажков) на сервер.

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

Будут оценены любые указатели / примеры кода.

1 Ответ

0 голосов
/ 29 января 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...