Ember Data:重写 Save 方法

2024-04-13

您好,Ember 数据世界,

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

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

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 });
}

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

这是一个例子:

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

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

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

现在,如果您想重写 save 最终在适配器上调用的内容,则需要更新以下三种方法之一,createRecord, updateRecord, deleteRecord。当调用 save 时,它​​们各自应该做什么,这是非常不言自明的。然后,您将遵循上面所做的模式:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ember Data:重写 Save 方法 的相关文章

随机推荐