Ember嵌套路线show.hbs params无效

时间:2015-10-06 03:49:17

标签: ember.js ember-cli

我正在努力展示一个节目'项目列表的模板。

我的index.hbs的工作原理如下:

路线/ index.js

import Ember from 'ember';

export default Ember.Route.extend({
  model: function() {
    return this.store.find('item');
  }
});

模板/项目/ index.hbs

items/index.hbs
<ul>
  {{#each model as |item|}}
      <li>
        {{#link-to 'items.show' item}}
          {{item.name}}
        {{/link-to}}
      </li>
  {{else}}
      <li>No contacts found.</li>
  {{/each}}
</ul>

但是,当我单击生成的链接时,它会将我带到正确的路径(localhost:4200 / items / 1),但是,它会给我以下错误:Error while processing route: items.show Assertion Failed: You may not pass 'undefined' as id to the store's find method Error: Assertion Failed: You may not pass 'undefined' as id to the store's find method

这是我的show.js和hbs:

路由/ show.js

import Ember from 'ember';
export default Ember.Route.extend({
  model: function(params) {
    return this.store.findAll('item', params.id);
  }
});

和templates / items / show.hbs

{{name}}

这里是router.js

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

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

export default Router.map(function() {
  this.resource('items', function() {
    this.route('show', {path: ':item_id'});
  });
});

我无法弄清楚它什么时候不起作用!我读到params不是从index发送到show ..但是呢?!

提前谢谢你。任何夸大的答案都会非常感激。

1 个答案:

答案 0 :(得分:2)

希望这会有所帮助。 http://ember-twiddle.com/147af82f6fa69bf97414

仔细查看你的代码片段之后,我意识到你的项目内部:模型​​钩子你将params.id传递给store.findAll return this.store.findAll('item', params.id),但是在你的router.js中你将它指定为item_id。您应该使用路径定义中使用的相同参数名称。