arrays - 从 Ember 中的模型对嵌套数组进行排序?

标签 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('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();
    } 
});

我知道我远没有做到这一点,但我只是不知道如何对这个嵌套数组进行排序。我看过数组 Controller 的例子,但我不知道如何使用一个来对这个嵌套数组进行排序。如果有人可以举例说明如何做到这一点,那将非常有帮助。谢谢你。

最佳答案

我同意卡尔曼的回答,但我建议您使用内置方法进行排序以节省麻烦:

App.Person = DS.Model.extend({
   name: DS.attr('string'),
   fruits: DS.hasMany('fruit', {async: true}),
   fruitSorting: ['title', 'color'],
   sortedFruits: Ember.computed.sort('fruits', 'fruitSorting')
});

我在这里 fork 了他的例子:http://emberjs.jsbin.com/manutu/1/edit?html,js,output

关于arrays - 从 Ember 中的模型对嵌套数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28903735/

相关文章:

javascript - Ember 过渡到父动态段(slugs)上的路由

ember.js - 在 Ember 中通过 ID 获取元素

java - Selenium:从数组中的字符串匹配xpath

arrays - [首先,...休息] : A spread argument must either have a tuple type or be passed to a rest parameter. ts(2556)

c - 在 C 中对多维数组列进行排序

javascript - 如何排序对象? (画家算法)

ember.js - Handlebars helper 返回标记

c - 打印数组列表大小崩溃

sql - 如何在postgresql中查找数组的大小

node.js - 如何在 Mongoose 中定义排序函数