2014-05-20 31 views
7

Hallo Ember Data World,Ember-Daten: Überschreiben Speichern-Methode

Ich habe gelernt, benutzerdefinierte Adapter herauszufinden, wie Sie die Speichermethode überschreiben.

Von meinem Verständnis, so scheint es, wie Sie, so etwas zu tun:

DS.RESTAdapter.extend({ 
    save: function() { return this._super();} 
}) 

Allerdings, wenn ich auf meinem Modell-Objekt speichern Sie die Operation aufzurufen versucht:

model.save() 

Die Der Speicher wird direkt aufgerufen und nicht der benutzerdefinierte Adaptercode.

Hat jemand versucht, dies vorher zu tun?

Ich bin in der Lage, die Methode find mit dem folgenden Code in dem gleichen Adapter auf der Platte

findQuery: function(store, type, query) { 
     //debugger; 
     console.log("findQuery: Custom adapter called!"); 

      return this.ajax(this.buildURL(type.typeKey), 'GET', { data: query }); 
} 

Antwort

9

save ist eigentlich definiert zu nennen, nicht der Adapter. Wenn Sie das übersteuern wollten, würden Sie dies in Ihrer Modelldefinition tun.

Hier ist ein Beispiel dafür:

App.Color = DS.Model.extend({ 
    color: DS.attr(), 

    save: function(){ 
     alert('save'); 
    } 
}); 

http://emberjs.jsbin.com/OxIDiVU/497/edit

Nun, wenn Sie wie zwingende fühlte, was sparen auf dem Adapter schließlich ruft Sie eine von drei Methoden zur Aktualisierung müssten, createRecord, updateRecord, deleteRecord . Sie sind ziemlich selbsterklärend in dem, was sie tun sollten, wenn Speichern aufgerufen wird. Sie würden dann ein Muster folgen, wie Sie oben haben:

App.ApplicationAdapter= DS.RESTAdapter.extend({ 
    updateRecord: function(){ 
    alert('update record'); 
    } 
}); 

http://emberjs.jsbin.com/OxIDiVU/498/edit

+0

Vielen Dank für den Unterschied zu erklären !! – joker1979