backbone.js - _.: a confuse with context之后

标签 backbone.js underscore.js

我在 Backbone.view 中扩展了这个功能

toggle: function () {
   var sempurna = _.after(array_obj.length, this.render);
   _.each(array_obj, function (v,k) {
      v.perormSomething();
      delete array_obj[key];
      sempurna();
  }, this);
}

所以我认为我可以在循环完成后立即渲染 View 。但不知何故, this 关键字引用的是 window 而不是 View 。如何指向想要查看的 this

最佳答案

this 设置为 window 因为您在调用 sempurna() 时没有点符号(因此没有任何显式接收对象)。

要解决此问题,您需要将 _.bind(或使用浏览器 native 绑定(bind)(如果可用))您的 sempurnathis:

toggle: function () {
   var sempurna = _.bind(_.after(array_obj.length, this.render), this);
   _.each(array_obj, function (v,k) {
      v.perormSomething();
      delete array_obj[key];
      sempurna();
  }, this);
}

演示 JSFiddle .

关于backbone.js - _.: a confuse with context之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24099810/

相关文章:

javascript - "Backbone.Model.extend() is not a function",我做错了什么?

javascript - 如何在 Backbone 模型中保存输入值

javascript - 如何将模型从 Backbone 集合克隆到另一个

javascript - 无法理解backbone.js教程示例

javascript - 如何在 View 中正确渲染 Backbone Collection?

javascript - 如何访问 Backbone Marionete 应用程序内的模型?

javascript - 主干事件不会在添加到 DOM 的新元素上触发

backbone.js - 将 Coffeescript Underscore.js 和 Backbone.js 放在一起

javascript - 使用下划线模板从另一个函数 jQuery 内部调用的事件不起作用

javascript - 下划线js替换对象中的项目