Wie kann ich feststellen, ob ein Modell wurde nicht verändert Backbone.js?
Dies kann aufgrund von Missbrauch die Komponente, obwohl ich das nicht glaube.
Ich habe ein Problem, wo ein Blick-updates ein Modell in Backbone JS und fordert, das Modell der Set-Methode, so dass Sie überprüfen können, es ist Eingang.
In der Theorie gibt es zwei Ergebnisse für eine solche Aktion: Fehler und Ändern.
Beide Veranstaltungen funktionieren wie vorgeschrieben.
Aber in der Tat gibt es eine Dritte Veranstaltung: Keine änderung.
Das ist, wenn die Eingabe nicht verändert wurde, ich kann nicht sagen, nach dem Aufruf Gesetzt, weil es wird kein Fehler geworfen sondern noch ein change-Ereignis, wie es nichts wirklich geändert hat - aber ich möchte dennoch wissen, von so einem Fall.
Gibt es eine Möglichkeit für mich, dies zu tun?
Der Grund ist, dass es eine Aktion ich will nur durchgeführt, wenn kein Fehler Auftritt, aber es gibt keine Möglichkeit für mich, zu wissen (ohne ein change-Ereignis), dass das Modell versucht, die neuen Werte und endete ohne Ergebnis, da es alles geschieht asynchron.
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jedes Rückgrat-Modell hat eine
hasChanged
Methode:Vielleicht können Sie verwenden, um überprüfen Sie Ihre Dritte Möglichkeit.
BTW, die Rückrufe sind nicht asynchron. Die Fehler und verändert werden callbacks ausgelöst werden und zurückkehren, bevor
set
zurück:Den
_performValidation
Aufruf löst das Fehler-callbacks, diethis.trigger
fordert, rufen die pro-Attribut Rückrufe.sync
,save
, ...) werden asynchron, alles was passiert nur im browser synchron und sequentiell.this._changed
die nicht berührt, wenn Sie nicht setzen Sie das Modell auf einen neuen Wert. So wird das nicht funktionieren.this._changed
ist gültig, wenn dieset
rufen Sie zurück und das ist, washasChanged
sieht;this._changing
, OTOH, ist nur gültig, während die kurze Fenster, während die Veränderung stattfindet. Das eigentliche problem ist, dass der AG möchte, dass die Abwesenheit eines Ereignisses um ein Ereignis, sich selbst und das ist nicht einfach zu tun. ÜberprüfunghasChanged
vor und nach sollten den trick tun, aber es ist schwer zu sagen, angesichts der begrenzten verfügbaren Informationen.In diesem Fall müssen Sie möglicherweise zu tanzen um
Model.set()
etwas zu bekommen, wo Sie wollen. Wenn Sie diese Funktion verwenden, dann sollten Sie die Definition einesvalidate()
Methode für Ihr Modell.http://documentcloud.github.com/backbone/#Model-validate
So können Sie diese Methode aufrufen, direkt...
So dass Sie immer mindestens erhalten 'ändern' oder 'Fehler' aus, auch wenn es die gleichen. Sie bekommen außerdem noch die vorhandenen Veranstaltungen aus.