如何按模型类别对骨干集合进行分组,然后按模型等级对每个组进行排序

Dev*_*mar 1 backbone.js backbone-events backbone-views marionette

我正在关注David Sulc关于Marionette的教程. http://davidsulc.com/blog/2012/04/15/a-simple-backbone-marionette-tutorial/,以便学习扩展它.

现在让我们说每只猫都有一个名字,等级和类别

AngryCat = Backbone.Model.extend({
   urlRoot: '/api/cats',
   defaults: {
          name: "New Cat Name",
          category: "Red Cat"
  }
});
Run Code Online (Sandbox Code Playgroud)

现在我想制作一个这样的复合视图:

第1类:红猫(03猫)

猫1

猫2

猫3

第2类:蓝猫(02猫)

猫X.

猫Y.

我怎样才能做到这一点.请帮忙!

dca*_*son 8

您可以使用该groupBy函数AngryCatcategory属性对模型进行分组,然后使用sortBy按其等级对每个组进行分类(我假设您的模型具有名为ranknumber 的属性).我还假设您有一个名为angryCats包含模型的初始集合变量.

var groups = angryCats.groupBy(function(ac) {
    return ac.get("category");
});

groups.each(function(group, key) {

     // This will output the category name & item count
     console.log(key + " " + group.length + " items"); 

     group.sortBy(function (model) {
         return model.get("rank");
     });

     group.each(function(model) {
         // This will output the model name
         console.log(model.get("name")); 
     });

});
Run Code Online (Sandbox Code Playgroud)

此外,如果您希望按模型的字符串属性(例如属性)对每个组进行排序,则需要从每个组name中创建一个新的本地范围的angryCats集合(组是数组),然后使用一个比较器作为链接问题概述.

希望这可以帮助