Ember.js 余烬数据重写URL
我有以下设置:Ember.js 余烬数据重写URL,ember.js,ember-data,Ember.js,Ember Data,我有以下设置: 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({
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()
-方法没有被调用?您重写了错误的find
方法。您是通过查询而不是id进行查找的,应该重写该方法
findQuery: function(store, type, query) {
// Do your thing here
return this.ajax(this.buildURL(type.typeKey), 'GET', { data: query });
}
您使用的是TabAdapter
,它特定于tab
类型的机型,而不是email类型的机型。您应该创建一个电子邮件适配器
。一般惯例是模型为单数,顺便说一句
另请参见:我是Ember的新手,但是否也有TabsController和Tab模型类?是的,但它们当前为空,如果未指定,Ember会自动为路线创建控制器。App.TabController=Ember.Controller.extend({});App.Tab=DS.Model.extend({});它仍然没有被调用?真奇怪。App.TabAdapter=DS.RESTAdapter.extend({findQuery:function(store,type,query){alert(“我没有被调用”);返回this.ajax(this.buildURL(type.typeKey),'get',{data:query};});