2

据我所知,Ember.js目前不支持在不启用实验{{control}}助手的情况下拥有单个控制器的多个实例的概念。

据我了解,执行排序列表的 Ember-y 方法是在执行排序的控制器上定义一个属性,例如:

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.BarhasMany实例App.Beer,使用Ember.SortableMixin可以直接创建一个排序列表。但是,如果我想同时显示两个 App.Bars (用于比较),则此方法会中断,因为它需要两个 s 实例App.BarController,这是不可能的。根据同一类的两个对象的内容获取两个排序列表的正确方法是什么?

4

1 回答 1

2

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

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

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

于 2013-03-26T07:25:20.553 回答