2011-11-18 18 views
6

Ho un problema durante l'associazione di un elenco di valori complessi (descrizione id/ ) a un elenco di caselle di controllo.L'utilizzo dell'aggregazione selezionata in knockout con un elenco di caselle di controllo controlla tutte le caselle di controllo

Il problema è che non ho bisogno solo dell'ID o della descrizione, ma di entrambi i tipi sono .

Quando eseguo il binding dell'associazione verificata, tutte le caselle nell'elenco vengono selezionate quando faccio clic su un elemento.

Questo è parte di qualcosa di più grande, e la ragione per cui voglio l'oggetto e non solo l'id è che il tipo complesso, a sua volta avrà una lista cui voglio legarsi a un altro elenco di caselle di controllo.

Ecco un violino che produce il problema: http://jsfiddle.net/M8KFd/1

grato per il vostro aiuto.

risposta

10

a monitorare lo stato di ogni singolo elemento, quindi ottenere gli elementi selezionati usando un dependent observable qualcosa come this

+0

Awesomeness! La mia lista è di dati serializzati dal back-end, ma ho finito con il loop dell'array iniziale, eseguendo uno slapping sulla proprietà selezionata: http://jsfiddle.net/M8KFd/2/ BTW, dovresti considerare l'uso di 'ko.utils.arrayFilter' invece di '$ .grep' per evitare di mescolare le dipendenze nel codice. Grazie! –

0

Una soluzione più semplice, è quella di falso la casella di controllo con i CSS, poi con eliminazione diretta basta chiamare un metodo che passerà l'intero elemento al ViewModel:

<li data-bind="click: $parent.setCompany"> 
     <span data-bind="text: CompanyName"></span>, 
     <span data-bind="text: RegAddress_PostTown"></span> 
    </li> 

Naturalmente questo non funziona per tutti gli scenari di cui alla risposta di Richard Friend.

Problemi correlati