我想将 checkScroll()
绑定(bind)到 View PhotoListView
,以便我可以从 内部调用
无需首先使用 this.checkScroll()
$(Window).scroll()var self = this
然后调用 self.checkScroll()
。
问题:但是绑定(bind)似乎不起作用,我收到错误 Uncaught TypeError: Object [object Window] has no method 'checkScroll'
我是否绑定(bind)是不是写错了?
查看
PhotoListView = Backbone.View.extend({
el: '#photo_list',
initialize: function() {
_.bindAll(this, 'checkScroll');
this.bind('checkScroll', this)
$(window).scroll(function() {
this.checkScroll();
});
},
checkScroll: function() {
console.log('checkScroll');
}
});
最佳答案
是的,试试这个:
initialize: function() {
_.bindAll(this, 'checkScroll');
$(window).scroll(this.checkScroll)
},
_.bindAll
将采用 this.checkScroll
并将其上下文固定为 this
,因此您可以直接将其作为处理程序传递。但你用匿名函数把它扔掉了。
请注意,“绑定(bind)”有两种不同的概念:
- 将函数绑定(bind)到对象,这样无论函数如何调用,都会有固定的
this
值 - 将处理程序附加到元素的事件
_.bindAll
执行前者。
关于javascript - 似乎无法将函数绑定(bind)到backbone.js 中查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11363763/