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 });
}
答案 0 :(得分:9)
save
实际上是在记录上定义的,而不是适配器。如果你想覆盖它,你会在你的模型定义中这样做。
以下是一个例子:
App.Color = DS.Model.extend({
color: DS.attr(),
save: function(){
alert('save');
}
});
http://emberjs.jsbin.com/OxIDiVU/497/edit
现在,如果您想要覆盖最终调用适配器的内容,则需要更新以下三种方法之一createRecord
,updateRecord
,deleteRecord
。当调用save时,它们在每个应该做的事情上都是非常自我解释的。然后,您将遵循上述模式:
App.ApplicationAdapter= DS.RESTAdapter.extend({
updateRecord: function(){
alert('update record');
}
});