嵌套路由和数组

时间:2014-12-31 14:32:01

标签: ember.js ember-data

在我的应用中,我有以下设置:

路由器

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>

令人非常沮丧的是,一些“简单”的东西,例如加载属于某种类型的产品阵列,是如此麻烦。

修改 我试图实现的是,当您访问主页时,您可以

  1. 点击链接“类型”,将您带到网址.... /类型,并显示所有类型的列表。没问题。
  2. 当您点击某个类型时,它会将您带到type / type_id(例如types / 1)并向您显示有关特定类型的信息(也可以使用)。
  3. 在同一页面上,我想显示与此类型相关的所有产品的列表。这是我在努力的地方
  4. 模型

    typeController

    产品

    name: DS.attr('string'),
    products: DS.hasMany('product', {async: true})
    

    我首先尝试通过在this question中建议的同一路线上传递两个模型。这在某种程度上工作正常,但我想在每个产品上放置一个动作和计算属性,因为模型是在afterModel钩子中加载的,所以它们不会更新。我认为要走的路是输入一个嵌套资源,该资源会根据type_id返回所有产品,但我无法以某种方式工作。

0 个答案:

没有答案