您好,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(使用前将#替换为@)