以下控制器不会产生任何ships
。如果我删除
model = model.sortBy('name');
它导致所有ships
,但显然它们没有按name
属性排序。
我该如何解决这个问题?
应用/控制器/ index.js
import Ember from 'ember';
export default Ember.Controller.extend({
selectedCompany: null,
companies: function(){
var model = this.get('model.companies');
return model;
}.property('model.companies'),
ships: function(){
var model = this.get('model.ships');
model = model.sortBy('name');
return model;
}.property('model.ships')
});
答案 0 :(得分:3)
我可能倾向于在这里使用计算属性,特别是sort
import Ember from 'ember';
export default Ember.Controller.extend({
selectedCompany: null,
companies: Ember.computed.alias('model.companies'),
shipSort: ['name:asc'],
sortedShips: Ember.computed.sort('model.ships', 'shipSort')
});
答案 1 :(得分:1)
虽然Ember.computed.sort
可能是最简单的方法,如果您只想对这些船只进行排序(请参阅Kori John Roys的回答),但这并未解决您的代码中出现的问题。
简而言之:您正试图对承诺进行排序,而不是数据。要对数据进行排序,您必须执行以下操作:
...
return model.then(function(data){return data.sortBy('name');})
...
现在,一旦解决了承诺,就会对实际数据进行排序。