2015-10-13 107 views
0

我有一個骨幹集合,我想根據類型分組,然後顯示到一個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個值:食肉動物,草食動物和雜食動物。

我想要先顯示錶上雜食動物的所有動物,然後是食肉動物,然後是食草動物。由於任何常規的排序功能都會首先顯示食肉動物,因爲它是按字母順序排列的,所以這不起作用。

使用這些自定義功能對骨幹集合進行排序的最直觀方法是什麼?

謝謝!

回答

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/

+0

這正是我一直在尋找。非常感謝! – nietsnegttiw