正如我所读到的那样,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
hasMany
个App.Beer
个Ember.SortableMixin
个实例,使用App.Bar
可以直接创建排序列表。但是,如果我想同时显示两个 App.BarController
(用于比较),此方法会因为需要两个{{1}}实例而中断,这是不可能的。根据同一类的两个对象的内容获取两个排序列表的正确方法是什么?
答案 0 :(得分:2)
根据同一类的两个对象的内容获取两个排序列表的正确方法是什么?
通常,您希望坚持每个列表一个控制器。所以在这种情况下,我建议你说App.LeftBarController
和App.RightBarController
。
当然会有共享代码,但可以重构为基类或mixin。