Backbone Collections - 无法设置排名'使用set方法

时间:2014-04-16 10:38:35

标签: javascript backbone.js backbone-collections

在我的backbone.marionette应用程序中,我试图设置一个模型属性' rank'作为它的循环索引。这是我的收藏代码:

 AngryCats = Backbone.Collection.extend({
          model:AngryCat,
          initialize: function(cats){
              var rank = 1;
              _.each(cats, function(cat){
                    cat.set('rank', rank);
                  rank++;
              })
          }
      });

但我收到的错误是:

TypeError: cat.set is not a function
cat.set('rank', rank);

任何人都告诉我这里有什么问题? (请查看小提琴链接以获取完整编码)

Live Demo

1 个答案:

答案 0 :(得分:1)

您正在传递javascript对象数组。但set仅在Backbone.Model实例中可用。只有在初始化之后,每个对象都转换为Backbone.Model对象。

你必须这样做

 var rank = 1;
 _.each(cats, function(cat){
     cat.rank = rank;
     rank++;
  })