Changetracking、サーバーに送信する前にクライアント側にデルタコレクションを作成する

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

質問

私のアプリには、クライアントのビューモデルにネストされたツリーがあります。各ツリーアイテムに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をチェックしない限り、それは十分に明確ではありません

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top