knockout seleziona/deseleziona tutte casella combinata

Io uso knockout per il mapping di JSON obejct di controllo utente, ho un elenco di caselle di controllo,
Sembrano

 <input type="checkbox" data-bind="checked: IsEnabled1" />

Ho JsonObject

 var viewModel = {
            IsEnabled1 :ko.observable(true),            
            IsEnabled2 :ko.observable(true),
            IsEnabled3 :ko.observable(false)
        };
  ...
  ko.applyBindings(viewModel);

E voglio aggiungere globale casella di controllo che sarà selezionare/deselezionare tutte le altre, ho fatto questo cambia in JavaScript lato, ma globale casella di controllo aggiornamento UI parte, ma sono dati da diverse caselle di controllo non mapping per oggetto JSON .

Casella globale

  $("#GeneralTable thead tr th:first input:checkbox").click(function () {
            var checkedStatus = this.checked;
            $("#GeneralTable tbody tr td:first-child input:checkbox").each(function () {
                this.checked = checkedStatus;                    
            });

        });

dopo questo codice il mio oggetto JSON contiene dati che non correlati alla UI.

Come aggiornare tutti i JSON dopo il cambiamento caselle di JS lato ?

Il codice da te postato non è abbastanza per noi per rispondere alla tua domanda.
Ora dovrebbe essere meglio. Grazie.
Problema nel codice,che si interagisce con i nodi. Ma è necessario interagire con i dati. È meglio in MVVM mondo 🙂 si Prega di controllare la mia risposta. Penso che funzionerà per voi.

OriginaleL’autore Arbejdsglæde | 2012-01-31

2 Replies
  1. 16

    Si prega di verificare l’esempio: http://jsfiddle.net/MenukaIshan/5gaLjh2c/

    Penso che è esattamente ciò di cui avete bisogno. Tutti gli articoli sono IsChecked osservabile proprietà. ViewModel contiene calcolate osservabili (leggibile e scrivibile) per selezionare o deselezionare tutti gli elementi.

    Questo è un perfetto esempio di utilizzo. Fatto il mio giorno due volte!
    Lavorando su un codice simile. Ho provato il tuo violino, ma nel mio caso sto usando knockout-3.2.0.js e non è che non funziona (Anche in violino), ma lavorando con knockout-2.0.0.js. Alcun indizio.
    3.2.4 isnt che lavorano in questo
    jsfiddle esempio 404.

    OriginaleL’autore Romanych

  2. 3

    C’è una soluzione alternativa qui http://jsfiddle.net/rniemeyer/kXYuU/

    La soluzione di cui sopra può essere migliorato in due modi

    -Per rendere AllChecked false per elenchi vuoti, abbiamo bisogno di controllare la lunghezza

    -Per ridurre il numero ricalcoli quando la selezione per un lungo elenco, abbiamo bisogno di aggiungere acceleratore

    self.AllChecked = ko.computed({
        read: function() {
            var firstUnchecked = ko.utils.arrayFirst(self.Items, function(item) {
                return item.IsChecked() == false;
            });
            return self.Items.length && !firstUnchecked;
        },
        write: function(value) {
            ko.utils.arrayForEach(self.Items, function(item) {
                item.IsChecked(value);
            });
        }
    }).extend({ throttle: 1 });

    OriginaleL’autore Torbjörn Nomell

Lascia un commento