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