在我的应用中,我有以下设置:
路由器
this.resource('types');
this.resource('type', {path: 'types/:type_id'})
当用户导航到types
时,他会获得包含所有不同类型的列表。当他点击链接时,他会导航到特定类型:页面。在这里,我想展示一系列产品。每种类型都有一系列产品。我试图让产品这样做:
this.resource('types');
this.resource('type', {path: 'types/:type_id'}, function(){
this.resource('products', {path: '/products'});
});
路由器
model: function(){
return this.store.find('product');
}
但这不起作用。我也试过了参数,但这不起作用。
model: function(params){
return this.store.find('product', {id: params_id});
}
模板
型模板
<h3>{{name}}</h3>
<hr>
{{outlet}}
产品模板
{{#each}}
{{name}}
{{/each}}
但是模板中没有任何内容被加载。我不知道这是不是要走的路。我在删除嵌套路由方面取得了一些成功,只是在afterModel
的{{1}}挂钩中加载了两个模型,但这并不能让我访问与产品相关联的其他一些模型。 / p>
令人非常沮丧的是,一些“简单”的东西,例如加载属于某种类型的产品阵列,是如此麻烦。
修改 我试图实现的是,当您访问主页时,您可以
模型 型
typeController
产品
name: DS.attr('string'),
products: DS.hasMany('product', {async: true})
我首先尝试通过在this question中建议的同一路线上传递两个模型。这在某种程度上工作正常,但我想在每个产品上放置一个动作和计算属性,因为模型是在afterModel钩子中加载的,所以它们不会更新。我认为要走的路是输入一个嵌套资源,该资源会根据type_id返回所有产品,但我无法以某种方式工作。