为什么我的模型钩子没有收到任何参数?

时间:2015-03-05 05:43:10

标签: javascript ruby-on-rails ember.js

免责声明:主要新手警告!

我已经在this教程之后成功设置了Rails后端/ Ember前端项目。

我的路由器

import Ember from 'ember';
import config from './config/environment';

var Router = Ember.Router.extend({
  location: config.locationType
});

Router.map(function() {
  this.resource('contacts', function() {
    this.resource('contact', { path: '/:contact_id' });
  });
});

export default Router;

现在,我想根据联系人的姓氏设置仅查找某些联系人的可能性,因此我按照了official docs for specifying query params

我修改了我的app/routes/contacts/index.js路线,现在看起来像这样:

import Ember from 'ember';

export default Ember.Route.extend({
  queryParams: {
    lastName: {
      refreshModel: true
    }
  },
  model: function(params) {
    return this.store.findQuery('contact', params);
  }
});

app/controllers/contacts.js

import Ember from 'ember';

export default Ember.ArrayController.extend({

  queryParams: ['lastName'],
  lastName: null,

});

不幸的是,即使我在浏览器中指定了查询参数,params也不会被填充。更确切地说,params对象如下所示:

enter image description here

似乎没有任何有趣的内容。

然而,查询参数信息以某种方式传播到视图,所以我感到有点困惑。如何在我的路线中为模型钩子填充params

1 个答案:

答案 0 :(得分:1)

好像this might be a bug。一个简单的解决方法是通过可选的转换参数访问查询参数:

import Ember from 'ember';

export default Ember.Route.extend({
  queryParams: {
    lastName: {
      refreshModel: true
    }
  },
  model: function(params, transition) {
    return this.store.findQuery('contact', transition.queryParams);
  }
});