参数在模型钩子中是空的,但是paramsFor不是空的

时间:2015-10-02 16:25:53

标签: ember.js ember-data ember-cli

下面的示例代码是默认情况下模型钩子应该如何工作的。奇怪的是,如果我根本不包含模型钩子,则会正确填充模型。如果我包含如下的模型钩子,它不起作用,因为“params”是一个空对象。但是,this.paramsFor('somemodel')返回{somemodel_id:“1”}那么,我在这里缺少什么?

import Ember from 'ember';

export default Ember.Route.extend({
  model: function(params) {    
    return this.store.find('somemodel', params.somemodel_id);
  }
});

2 个答案:

答案 0 :(得分:3)

如果未指定模型挂钩,嵌套路由将继承父路径的模型。如果您正在查找要编辑的模型,则不需要模型挂钩,如果您要查询商店中的其他内容并需要访问this._super(...arguments),则可以通过export default Ember.Route.extend({ model: function(params) { return this.store.find('somemodel', this._super(...arguments).get('id')); } }); 访问它。

-canOpenURL: failed for URL: "org-appextension-feature-password-management://" - error: "(null)"

答案 1 :(得分:0)

似乎params不会传播到嵌套路由。我的路由器看起来像这样:

  this.route('somemodel', { path: '/somemodels/:somemodel_id' }, function() {
    this.route('edit');
  });

隐含“索引”路线,是接收参数的路线。编辑路径是嵌套的,不接收参数。