我继承了一些Ember.js代码,由于某些原因,开发人员没有在这里使用Ember.ArrayController,所以我手动混合了Ember.SortableMixin。以下是我尝试使用的代码:
App.NflProjectionsController = Ember.Controller.extend(Ember.SortableMixin, {
position: 'qb',
site: 'FanDuel',
type: 'nfl_weekly_projection',
isLoading: true,
collection: [],
isQB: Ember.computed.equal('position', 'qb'),
isWR: Ember.computed.equal('position', 'wr'),
isRB: Ember.computed.equal('position', 'rb'),
isTE: Ember.computed.equal('position', 'te'),
isK: Ember.computed.equal('position', 'k'),
isDEF: Ember.computed.equal('position', 'def'),
isFlex: Ember.computed.equal('position', 'flex'),
isFanDuel: Ember.computed.equal('site', 'FanDuel'),
isDraftKings: Ember.computed.equal('site', 'DraftKings'),
isDraftStreet: Ember.computed.equal('site', 'DraftStreet'),
isFantasyAces: Ember.computed.equal('site', 'FantasyAces'),
isDraftDay: Ember.computed.equal('site', 'DraftDay'),
actions: {
choosePosition: function(type){
this.set('collection', []);
this.set('position', type);
},
chooseSite: function(type){
this.set('collection', []);
this.set('site', type);
},
sortBy: function(property) {
this.set('sortProperties', [property]);
this.set('sortAscending', !this.get('sortAscending'));
}
},
positionObserver: function(){
this.set('isLoading', true);
var self = this;
this.store.find(this.get('type'), {position: self.get('position'), site_id: self.get('site')}).then(function(collection){
// console.log("here we are");
if (self.get('collection').length == 0)
self.set('collection', collection.toArray());
self.set('isLoading', false);
});
}.observes('position').on('init'),
siteObserver: function(){
this.set('isLoading', true);
var self = this;
this.store.find(this.get('type'), {position: self.get('position'), site_id: self.get('site')}).then(function(collection){
if (self.get('collection').length == 0)
self.set('collection', collection.toArray());
self.set('isLoading', false);
});
}.observes('site').on('init')
});
我创建了sortBy
函数,并试图找出如何对设置为控制器collection
属性的数组进行排序。我见过的所有示例都直接与Ember.ArrayController
一起使用。是否可以使用此现有代码和Ember.Controller
进行排序?
答案 0 :(得分:1)
您 是否只想使用 如果您想保留现有的网页,那么您可以使用 @ Kingpin2k汇集了一个很好的jsbin,显示了这一点:ArrayController
?如果您的collection
属性可以被视为此页面的支持模型,那么通过基础路径填充collection
属性来替换model
属性是标准做法。< / p>
Ember.SortableMixin
进入正确的轨道。最初,我认为你需要使用Ember.ArrayProxy
来利用sortBy
,但是@ Kingpin2k在评论中指出,Ember实际上直接扩展了数组原型,所以即使这样也不是必要的。