Ich habe eine Anforderung, einen Benutzer über nicht gespeicherte Änderungen zu "nageln", wenn sie zwischen verschiedenen Backbone-Sammlungsmodellen wechseln (durch Klicken auf eine Tabellenzeile). Ich habe gegoogelt für "Rückgratmodell schmutzige Daten überprüfen" (zum Beispiel) und nichts definitives gefunden.Überprüfung auf alle schmutzigen Backbone-Modelldaten innerhalb der Sammlung
ich erreichte dies mit underscore's "some" und isEqual functionality, in einer Weise, wie die folgenden, „some()“ ausreichend ist, um zu bestimmen, ob es irgendwelche nicht gespeicherte Änderungen sind (im Gegensatz zu dem, was diese genauen Änderungen sein könnten) , insbesondere weil das Modellattribut tatsächlich ein Array von Objekten ist.
var anyDirty = _.some(myCollection.models, function(model) {
return !_.isEqual(model.get('nodes'), model.previousAttributes()['nodes]);
});
Ich bin neu in Backbone und frage mich, ob dies eine akzeptierte Art von Ansatz für Ad-hoc-ist-Daten für schmutziges Modell zu überprüfen. Oder stellt Backbone eine Art eingebauter Funktionalität für diesen Zweck bereit, die meine ersten Googling-Versuche nicht enthüllten?
Was ist mit http://stackoverflow.com/questions/9215036/backbone-js-is-there-a-change-since-last-server-save? – nikoshr
Vielen Dank, dass Sie darauf hingewiesen haben. Jetzt merke ich, dass ich meine Frage nicht spezifisch genug geschrieben habe. Ich denke, ich möchte wissen, ob sich * irgendein * Modell in einer bestimmten Sammlung geändert hat. In diesem Fall scheint meine Verwendung von _.some immer noch zu gehören, aber innerhalb des Iterators kann ich 'model.hasChanged()' anstelle von _.isEqual() verwenden –
Sie können stattdessen zuhören, wenn 'change' Ereignisse ausgelöst werden . Behalte es als einen Zustand in deiner Sammlung. Löschen Sie es, sobald die Sammlung wieder mit dem Server synchronisiert wurde. Überprüfen Sie dann nur dieses Statusattribut. Ich denke, 'change' wird auch ausgelöst, wenn Sie ein neues Modell erstellen, also sollten Sie auch nach' isNew() 'suchen. – j03w