我有以下设置:
App.Router.map(function() {
this.route('tab', { 'path' : 'tab/:which' });
});
App.ApplicationStore = DS.Store.extend({});
App.ApplicationAdapter = DS.RESTAdapter.extend({
host: '../api'
});
App.TabAdapter = DS.RESTAdapter.extend({
find: function(store, type, id) {
alert("I doesn't get invoked");
return this._super(store, type, id);
}
});
App.TabRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('emails', {tab: "inbox"});
}
});
当访问路线#/tab/inbox
时,我想重写端点的URL
http://localhost/ba/api/emails?tab=inbox
成
http://localhost/ba/api/emails/inbox
。因此,我在TabAdapter上覆盖find()
- 方法,但是当this.store.find('emails', {tab: "inbox"});
运行时,它不会输入我的重写方法(并且我的测试警报不会得到调用)。
为什么我的被覆盖的find()
- 方法没有被调用?
答案 0 :(得分:2)
你覆盖了错误的find
方法。你是通过查询找到的,而不是id,应该覆盖那个方法
findQuery: function(store, type, query) {
// Do your thing here
return this.ajax(this.buildURL(type.typeKey), 'GET', { data: query });
}
您正在使用TabAdapter
,该tab
特定于类型为email(s)
的{{1}}类型的模型。您应该创建一个Email(s)Adapter
。一般惯例是模型是单数的。