Löschen von Datensätzen in Ember.js

Bei der Verwendung von Ember (1.1.2) Data (1.0.0-beta) habe ich Datensätze, die als Teil eines Ganzen fungierten, bislang immer wie folgt gelöscht:

deleteEntry: function (entry) {
    entry.deleteRecord();
    if (entry.get("isDeleted")) this.removeObject(entry);
    entry.save();
}

Dies führte zwar dazu, dass der Datensatz aus der jeweiligen Ansicht verschwand (dank this.removeObject(entry);), aber andere Ansichten zeigten mitunter den betreffenden Datensatz immer noch. Ein erneuter Lösch-Versuch führte dann zu einer Ausnahme.

Seitdem ich allerdings auch das Ganze nach dem Löschen speichere, werden alle Ansichten korrekt aktualisiert, ohne dass ich manuell das Objekt aus dem Controller entfernen muss:

deleteEntry: function (entry) {
    entry.deleteRecord();
    entry.save();
    this.get("controllers.log").content.save();
}

Das klingt ja auch irgendwie logisch, wird aber leider mit keinem Wort in den Ember-Guides erwähnt.

Also merke: Sobald ich folgende Model-Definition habe, muss ich auch das übergeordnete Objekt speichern…

App.Log = DS.Model.extend({
    entries: DS.hasMany("logEntry", { async: true })
});
App.LogEntry = DS.Model.extend({
    log: DS.belongsTo("log", { async: true })
});

Schreibe einen Kommentar