自定义排序骨干集合

时间:2015-10-13 15:31:20

标签: javascript sorting backbone.js

我有一个骨干集合,我想根据类型分组,然后显示到一个html表。

我想要排序的值不是按字母顺序排列的。让我们说:

var Animals = Backbone.Model.extend({

        defaults: {
            animal_name: '',
            species: '',
            food_preference: '',
            characteristics: [],
        },

        initialize: function() {
            console.log('Animal being created...');
        }

    });

我想按food_preference排序。请注意,food_preference只能假设3个值:食肉动物,食草动物和杂食动物。

我想首先在桌子上展示所有杂食动物,然后是食肉动物,然后是食草动物。由于任何常规排序功能首先会显示食肉动物,因为它是按字母顺序排列的,因此不起作用。

使用这些自定义功能对主干集合进行排序的最直观方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以提供自定义comparator方法,根据您要设置的顺序返回一个数字:

var AnimalsCollection = Backbone.Collection.extend({
    comparator: function(m) {
        switch (m.get('food_preference')) {
            case 'omnivores': return 1;
            case 'carnivore': return 2;
            case 'herbivores': return 3;
            default: return Infinity;
        }
    }
});

演示http://jsfiddle.net/nikoshr/k74qc0xw/