2014-05-20 13 views
7

Ciao Ember World Data,Ember dati: Overriding Salva metodo

Ho studiato adattatori personalizzati che tentano di capire come eseguire l'override del metodo save.

Dalla mia comprensione, sembra che tu abbia bisogno di fare qualcosa di simile:

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

Tuttavia, quando ho tentato di richiamare l'operazione di salvataggio sul mio oggetto del modello utilizzando:

model.save() 

Il il negozio viene richiamato direttamente e non il mio codice personalizzato dell'adattatore.

Qualcuno ha tentato di farlo prima?

io sono in grado di chiamare il metodo find utilizzando il seguente codice nella stessa scheda

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

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

risposta

9

save è in realtà definito sul record, non è l'adattatore. Se hai avuto voglia di scavalcarlo, lo faresti nella definizione del tuo modello.

Ecco un esempio di che:

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

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

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

Ora, se vi siete sentiti come ignorando ciò che salva alla fine chiede l'adattatore si avrebbe bisogno di aggiornare uno dei tre metodi, createRecord, updateRecord, deleteRecord . Sono piuttosto auto-esplicativi in ​​ciò che dovrebbero fare ciascuno quando viene chiamato il salvataggio. Si potrebbe quindi seguire un modello, come avete fatto in precedenza:

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

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

+0

Grazie per spiegare la differenza !! – joker1979