2013-04-17 8 views
11

Ich habe meine Backbone-Version von 0.9.2 auf 1.0 aktualisiert, aber ich habe ein Problem festgestellt.{leise: wahr} in Backbone 1.0 Version

Das Modell wird nicht ordnungsgemäß aktualisiert. Es hat Verzögerungen in sich. zuvor unter meinem Code funktioniert perfekt:

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

Aber nach der Aktualisierung entfernte ich die {silent:true} und alles funktioniert perfekt. Das Modell wird ordnungsgemäß aktualisiert.

Ich habe so etwas wie dies auf Backbonejs.org lesen

Passing {silent: true} auf Änderung wird nicht mehr einzelne "change: attr" verzögern Ereignisse, statt sie ganz zum Schweigen gebracht.

Ich verstehe nicht ganz, was die Aussage bedeutet.

+1

mögliches Duplikat von [In Backbone.js, warum führen stumme Änderungen irgendwann zu Änderungsereignissen?] (Http://stackoverflow.com/questions/10030139/in-backbone-js-why-do-silent-changes-trigger) -change-events-schließlich) – WiredPrairie

Antwort

17

über die Bedeutung des Dokuments Sie zitiert:

Wenn Sie tun (Ich denke, das this.model war ein Fehler) this.set({attr: value}, {silent: true}) alle Änderungsereignisse waren nur bis zur nächsten nicht-stillen Veränderung verzögert. Das heißt, wenn Sie this.trigger('change') (wie die letzten Versionen von jQuery/Backbone, this.change() nicht mehr funktioniert) oder this.set('anotherAttr', anotherValue) tun würde, würde ein change:attr Ereignis ausgelöst werden.

Ab Backbone 1.0 hat sich dieses Verhalten geändert. Wenn Sie die stille Flagge verwenden, sind Sie nicht das Ereignis change:attr mehr Verzögerung, Sie sind shutting es komplett aus.

Also im Grunde mit einem Stück Code zu veranschaulichen:

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

einen Alarm in Backbone vor 1.0, tun aber nicht in Backbone 1.0.

+0

meine Entschuldigung .. Tippfehler. :) vor kurzem habe ich das gelesen. http://stackoverflow.com/questions/10030139/in-backbone-js-why-do-silent-changes-trigger-change-events-eventuell und es scheint meine Frage zu beantworten. Nun, auch deine Antwort bestätigt es. Vielen Dank. – jongbanaag

+0

@ Dreyfus15 bitte in Betracht ziehen, die Antwort zu akzeptieren oder Ihre Frage zu löschen, lassen Sie es nicht in diesem Zustand, während Ihr Problem scheint gelöst. – Loamhoof

+0

Entschuldigung. Ich habe vergessen. Ich wollte deine Antwort markieren, aber ich musste deine Antwort nach 2 Stunden markieren und es verging mir. Vielen Dank – jongbanaag