Ember数据:覆盖保存方法

jok*_*979 7 ember.js ember-data

你好Ember Data World,

我一直在研究自定义适配器,试图弄清楚如何覆盖save方法.

根据我的理解,似乎你需要做这样的事情:

DS.RESTAdapter.extend({ 
   save: function() { return this._super();}
})
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用以下方法调用模型对象上的保存操作时:

model.save()
Run Code Online (Sandbox Code Playgroud)

商店直接调用,而不是我的适配器自定义代码.

有没有人试图这样做?

我可以在同一个适配器中使用以下代码调用find方法

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

            return this.ajax(this.buildURL(type.typeKey), 'GET', { data: query });
}
Run Code Online (Sandbox Code Playgroud)

Kin*_*n2k 10

save实际上是在记录上定义的,而不是适配器.如果您想要覆盖它,您可以在模型定义中这样做.

这是一个例子:

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

    save: function(){
      alert('save');
    }
});
Run Code Online (Sandbox Code Playgroud)

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

现在,如果你觉得像覆盖什么拯救最终调用你需要更新的三种方法之一的适配器上,createRecord,updateRecord,deleteRecord.当调用save时,它们在每个应该做的事情上都是非常自我解释的.然后,您将遵循上述模式:

App.ApplicationAdapter= DS.RESTAdapter.extend({
  updateRecord: function(){
    alert('update record');
  }
});
Run Code Online (Sandbox Code Playgroud)

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