2011-05-11 17 views

risposta

27

È necessario sospendere gli eventi prima di impostare il valore e riprendere gli eventi dopo questo. Ad esempio:

myCheckBox.suspendEvents(false); // Stop all events. 
           //Be careful with it. Dont forget resume events! 
myCheckBox.setValue(!myCheckBox.getValue()); // invert value 
myCheckBox.resumeEvents(); // resume events 
1

Perché non è sufficiente impostare r.checked = true, non funziona?

1

Perché non hai appena impostato r.checked = true, non funziona?

L'impostazione degli attributi selezionati influisce solo sul controllo di non rendering per assegnare il valore di controllo iniziale. Dopo il rendering non puoi usarlo per cambiare valore.

Sospendere/Riprendere eventi è una buona pratica per modificare il valore di controllo senza inviare notifiche.

Inoltre è possibile mettere stato controllato immedially Dom elemento:

item.el.dom.checked = true;

0

stavo già provando la risposta accettata prima di googling, ma non ha funzionato in 4.1.3. Quanto segue ha fatto:

myCheckBox.setRawValue(true); 

Spero che questo aiuti futuri googler.

+1

Solo una nota di cautela: utilizzando "setRawValue", il primo evento di deselezione non viene attivato. Fonte: http://www.sencha.com/forum/showthread.php?263404-Checkbox-does-not-fire-quot-change-quot-event-on-the-first-change-after-setRawValue(true) . & s = 2fb682a6d30f35675c73e5c6230c476d – pvieira

0

Calling suspendEvents(false) prima di impostare il valore e resumeEvents() poi è un approccio più generico di setRawValue perché se si sta utilizzando convertitori (diciamo, 1 è true e 0 è false) rimarranno a lavorare.

Problemi correlati