自定义排序 Backbone.js 集合

ipakzgxi  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(159)

我有一个 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个值:食肉动物、食草动物和杂食动物。
我想首先显示表中所有杂食动物,然后是食肉动物,再然后是食草动物。由于任何常规排序功能都将首先显示食肉动物,因为它是按字母顺序排列的,因此这将不起作用。
使用这些自定义功能对 Backbone.js 集合进行排序的最直观方式是什么?
谢谢你!

k2fxgqgv

k2fxgqgv1#

您可以提供一个自定义的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;
        }
    }
});

和演示
第一个

相关问题