Ember.js具有多个主 - 细节视图

时间:2013-03-26 00:05:35

标签: ember.js

正如我所读到的那样,Ember.js目前不支持在没有启用实验{{control}}帮助程序的情况下拥有单个控制器的多个实例的概念。

据我了解,执行排序列表的Ember-y方法是在Controller上定义一个执行排序的属性,la:

App.BarController = Ember.ObjectController.extend({
  beers: (function() {
    return Ember.ArrayProxy.createWithMixins(Ember.SortableMixin, {
      sortProperties: ['rating'],
      content: this.get('content.beers')
    })
  }).property('content.beers')
});

在我的应用程序中,我想在酒吧点击所有啤酒,并按评级对这些啤酒进行分类。对于一个栏,使用普通的主 - 细节模式,给定App.BarController,这相当简单。但是,如果我想并排显示两个条形图,那么这个模型突然间会断裂。我无法在{{render}}中使用{{each}}(因为render只能调用一次),以下情景也会中断,因为数据绑定会更新为仅显示最后吧。

{{#each bar in controller}}
  {{#with bar as controller}}
    {{view BarView}}
  {{/with}}
{{/each}}

最后,我不能只使用{{view}},因为这会删除按评级对数据进行排序的功能。视图必须绑定到控制器或其他一些排序机制。

TL; DR:鉴于App.Bar hasManyApp.BeerEmber.SortableMixin个实例,使用App.Bar可以直接创建排序列表。但是,如果我想同时显示两个 App.BarController(用于比较),此方法会因为需要两个{{1}}实例而中断,这是不可能的。根据同一类的两个对象的内容获取两个排序列表的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

  

根据同一类的两个对象的内容获取两个排序列表的正确方法是什么?

通常,您希望坚持每个列表一个控制器。所以在这种情况下,我建议你说App.LeftBarControllerApp.RightBarController

当然会有共享代码,但可以重构为基类或mixin。