Arrays 从Ember中的模型排序嵌套数组?
所以我在Ember中有一个模型,它生成一个包含三个对象的散列。其中一个对象是一个对象数组,每个对象内部都有另一个数组。我需要对这个最里面的数组进行排序,但在这样做时遇到了问题 这是我的模型Arrays 从Ember中的模型排序嵌套数组?,arrays,sorting,ember.js,Arrays,Sorting,Ember.js,所以我在Ember中有一个模型,它生成一个包含三个对象的散列。其中一个对象是一个对象数组,每个对象内部都有另一个数组。我需要对这个最里面的数组进行排序,但在这样做时遇到了问题 这是我的模型 App.Person = DS.Model.extend ({ first_name: DS.attr('string'), last_name: DS.attr('string'), age: DS.attr('string'), gender: DS.attr('strin
App.Person = DS.Model.extend ({
first_name: DS.attr('string'),
last_name: DS.attr('string'),
age: DS.attr('string'),
gender: DS.attr('string'),
innerMostArray: DS.hasMany('innerMostObject')
});
App.innerMostObject = DS.Model.extend ({
person_id: DS.belongsTo('person'),
attr1: DS.attr('string'),
attr2: DS.attr('string')
});
这是我的路线
App.NestedArrayRoute = Ember.Route.extend({
model: function(params) {
return Ember.RSVP.hash({
object1: this.store.find('object1', params.object1_id),
people: this.store.all('person'),
object3: this.store.all('object3')
});
},
afterModel: function(model, transition) {
model.people.forEach(function(item, index, enumerable){
var innerMostArray = item.get('innerMostArray');
var sortedArray = innerMostArray.sortBy('attr1', 'attr2');
});
model.people.update();
}
});
我知道我远没有做到这一点,但我只是不知道如何排序这个嵌套数组。我见过数组控制器的例子,但我不知道如何使用它来排序这个嵌套数组。如果有人能举例说明如何做到这一点,那将非常有帮助。谢谢。一种方法是在模型上创建计算属性,如下所示:
App.Person = DS.Model.extend({
name: DS.attr('string'),
fruits: DS.hasMany('fruit', { async: true }),
sortedFruits: function(){
var fruits = this.get('fruits');
return fruits.sortBy('title', 'color');
}.property('fruits.@each.title', 'fruits.@each.color')
});
工作示例我同意Kalmans的答案,但我建议您使用内置方法进行排序,以避免麻烦:
App.Person = DS.Model.extend({
name: DS.attr('string'),
fruits: DS.hasMany('fruit', {async: true}),
fruitSorting: ['title', 'color'],
sortedFruits: Ember.computed.sort('fruits', 'fruitSorting')
});
我在这里举了他的例子:看起来很棒!我喜欢它:)排序不是唯一的内置功能,看看这里以
Ember.computed.开头的函数。
:哦,我更喜欢这个方法。我觉得这个比较容易理解。