2013-04-17 7 views
11

Stavo aggiornando la mia versione di backbone da 0.9.2 a 1.0 eppure ho riscontrato un problema.{silent: true} in versione Backbone 1.0

Il modello non si aggiorna correttamente. Ha dei ritardi. in precedenza il mio codice qui sotto funziona perfettamente:

this.model({ attrib: true},{silent:true}); 

Ma dopo l'aggiornamento ho rimosso il {silent:true} e tutto funziona alla perfezione. Il modello si aggiorna correttamente.

ho letto qualcosa di simile su Backbonejs.org

Passando {silenziosa: true} sul cambiamento non sarà più ritardare "cambiamento: attr" i singoli eventi, invece sono del tutto a tacere.

Non capisco cosa significhi l'affermazione.

+1

possibile duplicato di [In Backbone.js, perché le modifiche silenziose attivano eventualmente gli eventi di modifica?] (Http://stackoverflow.com/questions/10030139/in-backbone-js-why-do-silent-changes-trigger -change-events-eventualmente) – WiredPrairie

risposta

17

Circa il significato del documento che hai citato:

Quando stavi facendo (immagino la this.model è verificato un errore) this.set({attr: value}, {silent: true}), tutti gli eventi di modifica erano solo ritardato fino al successivo cambio non silenziosa. Cioè, se stavi facendo (come delle ultime versioni di jQuery/Backbone, this.change() non funziona più) o this.set('anotherAttr', anotherValue), un evento change:attr sarebbe stato attivato.

A partire da Backbone 1.0, questo comportamento è stato modificato. Quando utilizzi la bandiera invisibile all'utente, sei senza ritardo l'evento change:attr, sei spegnendo completamente.

Quindi, fondamentalmente, per illustrare con un pezzo di codice:

myModel.listenTo(myModel, 'change:attr', function() {alert();}); 
myModel.set('attr', true, {silent: true}); 
myModel.trigger('change'); 
// or myModel.set('anotherAttr', true); 

farà un avviso nel Backbone prima 1.0, ma non in Backbone 1.0.

+0

mi scuso .. errore di battitura. :) recentemente ho letto questo. http://stackoverflow.com/questions/10030139/in-backbone-js-why-do-silent-changes-trigger-change-events-eventually e sembra rispondere alla mia domanda. Bene anche tu sei la risposta lo conferma. Grazie. – jongbanaag

+0

@ Dreyfus15 per favore considera di accettare la risposta o di eliminare la tua domanda, non lasciarla in questo stato mentre il tuo problema sembra risolto. – Loamhoof

+0

scusa. Ho dimenticato. Stavo per segnare la tua risposta ma mi ha richiesto di segnare la tua risposta dopo 2 ore e mi è sfuggito di mente. Grazie – jongbanaag