【问题标题】:How can I get the index of an item added to a Backbone collection via fetch?如何通过 fetch 获取添加到 Backbone 集合中的项目的索引?
【发布时间】:2013-04-05 17:23:46
【问题描述】:

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

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

Backbone’s documentation for Collection.add 表示“如果你是一个回调,正在监听集合的 "add" 事件,options.index 会告诉你模型被添加到集合中的索引。”

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

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

【问题讨论】:

    标签: javascript backbone.js


    【解决方案1】:

    对于以后阅读本文的任何人,注意:从 0.9.9 版开始,不再设置 options.index。来自更新日志:

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

    【讨论】:

      【解决方案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 版中可用

      【讨论】:

      • 啊哈!是的,当然——我看过第三个参数,但我认为它是别的东西,因为索引设置为零。我忘记了我只是在测试将一个项目添加到一个空集合中,所以很明显索引会为零。太好了,干杯。
      猜你喜欢
      • 2015-02-28
      • 2017-05-28
      • 2011-11-20
      • 2012-09-21
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      相关资源
      最近更新 更多