我正在努力展示一个节目'项目列表的模板。
我的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 ..但是呢?!
提前谢谢你。任何夸大的答案都会非常感激。
答案 0 :(得分:2)
希望这会有所帮助。 http://ember-twiddle.com/147af82f6fa69bf97414
仔细查看你的代码片段之后,我意识到你的项目内部:模型钩子你将params.id传递给store.findAll return this.store.findAll('item', params.id)
,但是在你的router.js中你将它指定为item_id。您应该使用路径定义中使用的相同参数名称。