Ember数据:覆盖保存方法

时间:2014-05-20 18:09:55

标签: ember.js ember-data

Hello Ember Data World,

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

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

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

但是,当我尝试使用:

在模型对象上调用保存操作时
model.save()

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

以前有人试图这样做吗?

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

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

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

1 个答案:

答案 0 :(得分:9)

save实际上是在记录上定义的,而不是适配器。如果你想覆盖它,你会在你的模型定义中这样做。

以下是一个例子:

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

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

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

现在,如果您想要覆盖最终调用适配器的内容,则需要更新以下三种方法之一createRecordupdateRecorddeleteRecord。当调用save时,它们在每个应该做的事情上都是非常自我解释的。然后,您将遵循上述模式:

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

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