【问题标题】:display collection items - backbone展示收藏品 - 骨干
【发布时间】:2013-09-25 18:58:23
【问题描述】:

我在尝试显示收藏项时遇到问题,特别是在 collection.each() 函数上出现错误:

getTodo: function(){
  this.todos = new TodosCollection;
  this.todos.query = new Parse.Query("test");
  this.todos.fetch({
success:function(obj){
    console.log(obj.length);
    obj.each(this.addOne);
    }
  });
},
addOne: function(todo){
  console.log(todo);
}

使用这段代码我得到这个错误:

Uncaught TypeError: undefined is not a function

console.log(obj.lenght) 是 != 0,那么错误在哪里?

【问题讨论】:

    标签: backbone.js collections


    【解决方案1】:

    您从中调用addOne 方法的this 是回调,而不是您的对象- 并且回调的属性addOneundefined,因此您尝试将undefined 作为函数调用。您可以通过这种方式将回调绑定到对象范围:

    success: _.bind(function(obj){
      obj.each(this.addOne);
    }, this)
    

    【讨论】:

    • addOne 内部也会发生类似的问题,除非它也被绑定到某个地方,您可以 obj.each(this.addOne, this) 来解决这个问题。
    • 当然 - 我没有绑定它,因为在示例中没有引用 thisin addOne,但可能在实际代码中会有一些。
    猜你喜欢
    • 2013-08-03
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    相关资源
    最近更新 更多