ChangeTracking, la création d'une collection delta sur le côté client avant de l'envoyer au serveur

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

Question

Mon application a un arbre imbriqué dans un viewmodel sur le client. Je templating jquery sur chaque élément de l'arbre et il est récursive si elle a un treeitemGroup. Ainsi, l'objet JSON envoyé au client des regards serveur comme celui-ci,

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

ressemble à mon TreeItemTemplate ce,

<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>

Maintenant, je dois être en mesure de suivre les changements à la IsChecked propriété sur chaque TreeItem, qui est lié à chaque case correspondante. Après les contrôles utilisateur un ensemble de TreeItems, un bouton distinct sera cliquée, qui devront envoyer les deltas sous forme de MvvmTreeItem [] tableau d'objets JSON (seuls les changements qui se passait sur le client aux statuts de cases à cocher) au serveur.

Jusqu'à présent ma recherche suggère, je remplacer la valeur par défaut cochée bindingHandler de knockoutjs avec moi-même et gérer l'événement en poussant des éléments dans un tableau de côté client, mais la difficulté à visualiser comment y parvenir.

Les pointeurs / échantillons de code sera apprécié.

Était-ce utile?

La solution

Je l'ai fait de bons progrès avec l'aide des gens bien plus à la groupe Google pour Knockoutjs comme @green et @mkidder (merci les gars)

Je vois encore plusieurs questions (mentionnées dans le fil), et l'espoir de trouver des réponses.

Il ne sera pas assez clair, sauf si vous cochez la jsFiddle

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top