setupController不再适用于Ember路由

时间:2015-11-03 18:55:09

标签: ember.js

我无法再设置具有多个模型哈希的路由。我用来做的是:

import Ember from 'ember';

export default Ember.Route.extend({

  model() {
    return Ember.RSVP.hash({
      products: this.store.findAll('product'),
      suppliers: this.store.findAll('supplier')
    });
  },
  setupController(controller, model) {
    controller.set('products', model.products);
    controller.set('suppliers', model.suppliers);
  }

});

当我这样做时,我无法遍历每个{{#each products}},但我仍然可以使用{{#each model.products}}

1 个答案:

答案 0 :(得分:1)

不推荐使用对象代理,因此您应该引用带有model.前缀的模型。

执行此操作的正确方法是省略setupController并将模型用作包含.products.suppliers键的对象。

你仍然需要{{#each model.products as |product|}},除非你想在你的控制器中将它们作为别名:

products: Ember.computed.alias("model.products")

我建议您在模板中坚持使用model.products,以减轻对特定数据来源的混淆。删除它意味着它在路由的model钩子中获取了与控制器相关的模型数据。

编辑:上述解决方案在Ember 1.13.5中完成,也适用于任何2.x版本。