如何通过fetch获取添加到Backbone集合的项的索引?

时间:2012-02-07 13:19:36

标签: javascript backbone.js

我有一个Backbone Collection。我正在使用fetch({add:true})从我的服务器获取新项目,并将它们添加到集合中。

我已将侦听器函数绑定到集合的add事件。我希望该函数获取项目添加到集合的索引。

Backbone’s documentation for Collection.add说“如果你是一个收听集合的"add"事件的回调,options.index会告诉你模型被添加到集合的索引。”< / p>

我已经将似乎传递给我的侦听器函数的参数记录到控制台并查看了它们。据我所知,第一个参数是添加的项目,后跟一个临时的集合对象,用于在从服务器返回时保存它。我好像没有index属性的对象。

如何获取项目添加到集合的索引?

2 个答案:

答案 0 :(得分:8)

对于将来阅读此内容的任何人,请注意:从版本0.9.9开始,不再设置options.index。来自更改日志:

  

要提高add的性能,将不再在add事件回调中设置options.index。 collection.indexOf(model)可用于根据需要检索模型的索引。

答案 1 :(得分:2)

检查绑定函数的第三个参数,它应该包含索引属性

var c=new Backbone.Collection();
c.bind("add",function(model,collection,opts){
    console.log(opts);
});

c.add({});
c.add({});

编辑:我刚刚检查了Backbone 0.5.3,看起来options.index仅适用于0.9版本