好了,所以我有一个控制器,它的模型设置如下:灰烬PromiseArray sortBy
App.MyModel = DS.Model.extend({
myOtherProperty: attr(),
mySortKey: attr(),
mySubCollection: function() {
return this.store.filter('MyOtherModel', function (myOtherModel) {
//Some basic filtering logic (it's actually more complex than this)
return myOtherModel.get('someProperty') == this.get('myOtherProperty');
});
}.property('myOtherProperty')
})
实际的过滤功能并不重要 - 重要的是,该“mySubCollection”计算属性返回DS.PromiseArray对象。上述模型的控制器的类型是'Ember.ObjectController',因为它只显示一个对象。
显示此属性的模板使用的{{每个}}帮手这样做:
MyTemplate的:
{{#each mySubCollection}}
{{view App.MyView}}
{{/each}}
现在 - 我需要排序的“mySortKey”这个承诺数组属性按降序排列。我怎样才能做到这一点?该文档说DS.PromiseArray从Ember.Array扩展,但在'mySubCollection'的计算属性的末尾添加'sortBy('mySortKey:desc')'会导致它断开而不工作 - 这很有意义,因为我会在一个承诺而不是数组上调用'sortBy'。
我看了一堆不同的想法,不断提出的是切换到使用ArrayController。我可以做到这一点,但这并不理想,因为它在一个非常简单的设置上增加了一些复杂性,这些设置已经很好(除了排序)。
有什么想法?
我喜欢这个想法,这是一个很好的展示mixins的方式......谢谢!我会试一试,如果它有效,我会给你答案 –
作品像一个魅力 - 谢谢! –
这仍然是已知的做事方式吗? – Anthony