Domanda

La mia app ha un albero nidificato in un ViewModel sul client. Ho template jquery su ogni elemento della struttura ed è ricorsivo se ha un treeitemGroup. Così l'oggetto JSON inviato al client da sguardi dei server di questo tipo,

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

Il mio aspetto TreeItemTemplate come questo,

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

Ora ho bisogno di essere in grado di tenere traccia delle modifiche al IsChecked di proprietà su ogni TreeItem, che è destinato a ciascuna casella di controllo. Dopo i controlli di utente una serie di TreeItems, verrà fatto clic su un pulsante separato, che dovranno inviare i delta sotto forma di MvvmTreeItem [] JSON matrice di oggetti (cambia solo che è accaduto sul client per gli stati casella di controllo) al server.

Finora la mia ricerca suggerisce, dovrei ignorare l'impostazione predefinita verificato bindingHandler di knockoutjs con il mio e gestire l'evento spingendo gli elementi in a un array lato client, ma avendo difficoltà a visualizzare come fare questo.

Sarà apprezzato Eventuali / esempi di codice puntatori.

È stato utile?

Soluzione

Ho fatto buoni progressi con l'aiuto dei genietti sopra al gruppo Google per Knockoutjs come @green e @mkidder (grazie ragazzi)

Vedo ancora diversi problemi (menzionati nel thread), e la speranza di trovare delle risposte.

Non sarà abbastanza chiaro a meno che non si controlla la JSFiddle

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top