Die richtige Art, löschen von Modell-Datensatz mit ember-data
Ich habe einen controller, der listet alle Einheiten-von-Messen im system. Wenn ein Benutzer einen bestimmten Datensatz in der Uom
Modell ich möchte in der Lage sein, um es zu löschen. Ich bin mit Ember-Data beta-2. Hier ist, was ich habe, so weit:
App.UomsController = Ember.ArrayController.extend({
actions: {
deleteRecord: function(id) {
console.log("deleting: " + id);
var promisedDelete = this.store.find('uom',id).then(function(uom){
uom.deleteRecord();
});
}
}
});
Die Aktion deleteRecord
aufgerufen wird, übergeben Sie eine gültige ID und ein Versprechen zurückgegeben. Mit der then()
Funktionalität von dem Versprechen, das ich dann anrufen Ember deleteRecord()
wenn das Versprechen wurde erfüllt und es scheint zu funktionieren lokal. Ich sage das, weil dieser Datensatz sofort verschwindet vom Bildschirm, und die Glut Debugger. Leider ist das löschen nicht gespeichert worden ist, um das backend-und einen reload der hte-Seite bringt sofort wieder das lokal "gelöscht" - Eintrag.
Meine Fragen sind:
- Ist dies eine angemessene Methode für die Ausführung einer lokalen löschen?
- Wie kann ich bestehen und löschen im backend?
InformationsquelleAutor ken | 2013-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie zu nennen
uom.save()
zu bestehen, die änderung an den back-End nach dem Aufrufuom.deleteRecord()
.Was Sie tun könnte funktionieren, aber es scheint ein bisschen kompliziert (zum Beispiel
this.store.find('uom',id)
wird in eine unnötige Anfrage an das backend). Versuchen Sie dies:und in Ihrer Vorlage haben Sie so etwas wie dieses:
BEARBEITEN, um Antwort Kommentar: Wenn
this.get('model')
ist wieder ein Versprechen, das folgende sollte funktionieren.Können Sie aktualisieren Sie diese Antwort für die neuere version von Ember Daten? Es gibt ein Versprechen für
get('model')
.siehe meine aktualisierte Antwort
InformationsquelleAutor chopper
In ember-data v1.0.0-beta.4 Sie hat ein destroyRecord Methode hat das löschen und speichern Sie in einem Aufruf. Die Sie verwenden können, wie diese:
InformationsquelleAutor Rob
Den
deleteRecord
Methode kann aufgerufen werden, auf eine beliebige Instanz vonDS.Model
Klasse. Es entfernt den Datensatz bilden die Store Aber es wird nicht dauerhaft in der backend.App.UomsController = Ember.ArrayController.extend({
actions: {
deleteRecord: function(id) {
console.log("deleting: " + id);
var promisedDelete = this.store.find('uom',id).then(function(uom){
uom.deleteRecord();
});
}
}
});
Für die Löschung weiterhin in der backend, haben wir zu nennen save-Methode auf den Datensatz als( wie createRecord (), gefolgt von save() zum speichern des Datensatzes im backend) :
App.UomsController = Ember.ArrayController.extend({
actions: {
deleteRecord: function(id) {
console.log("deleting: " + id);
var promisedDelete = this.store.find('uom',id).then(function(uom){
uom.deleteRecord();
uom.save(); //The deletion will persist now
});
}
}
});
Alternativ können Sie auch
destroyRecord()
Methode derDS.Model
- Klasse, die weiterhin besteht, löschen.App.UomsController = Ember.ArrayController.extend({
actions: {
deleteRecord: function(id) {
console.log("deleting: " + id);
var promisedDelete = this.store.find('uom',id).then(function(uom){
uom.destroyRecord();
});
}
}
});
InformationsquelleAutor krnbatta