Changetracking、サーバーに送信する前にクライアント側にデルタコレクションを作成する
-
12-10-2019 - |
質問
私のアプリには、クライアントのビューモデルにネストされたツリーがあります。各ツリーアイテムに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オブジェクト配列の形式でデルタを送信する必要があります(クライアントで発生したチェックボックスステータスの変更のみ)。
これまでのところ、私の研究では、knockoutjsのデフォルトのチェックされたバインディングハンドラーを自分のものでオーバーライドする必要があり、クライアントの側面配列にアイテムをプッシュすることでイベントを処理する必要がありますが、それを達成する方法を視覚化するのが困難です。
ポインター /コードサンプルは大歓迎です。
解決
私は上の素晴らしい人々の助けを借りて良い進歩を遂げました Google Group for knockoutjs @greenと@mkidderのように(ありがとう)
私はまだいくつかの問題(スレッドで言及されている)を見て、答えを見つけたいと思っています。
jsfiddleをチェックしない限り、それは十分に明確ではありません
所属していません StackOverflow