我想将checkScroll()
绑定到视图PhotoListView
,以便可以从this.checkScroll()
调用$(Window).scroll()
,而无需先具有var self = this
然后调用self.checkScroll()
。
问题:但是,绑定似乎不起作用,并且出现错误Uncaught TypeError: Object [object Window] has no method 'checkScroll'
我是否错误地绑定了它?
视图
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
,因此您可以直接将其作为处理程序传递。但是您通过使用匿名函数将其丢弃。请注意,“绑定”有两种不同的概念:
将函数绑定到对象,以便无论如何调用该函数,它都将具有固定的
this
值将处理程序附加到元素的事件
_.bindAll
是前者。jsfiddle demo