javascript - 似乎无法将函数绑定(bind)到backbone.js 中查看

标签 javascript jquery backbone.js underscore.js

我想将 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 执行前者。

<小时/> jsfiddle demo

关于javascript - 似乎无法将函数绑定(bind)到backbone.js 中查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11363763/

相关文章:

带有data选项的Backbone.js提取方法正在传递带有方括号的URL参数

javascript - jQuery 函数在第一次单击时显示在控制台中,但不在浏览器中显示,然后在第二次单击时在浏览器中显示两次

javascript - 将类方法中的值作为参数传递给同一类中的另一个方法 - JS

javascript - jquery中的一个div两个函数

javascript - 如何从异步调用返回响应?

javascript - Jquery WordPress 控制台内的 javascript 拆分错误

javascript - 如何在 ES2015 中克隆一个对象(包括其原型(prototype))

javascript - 无法将 html 元素附加到主干中的 el。

javascript - 逗号分隔语法中的变量含义/值

javascript - 定义 CommonJS 模块时的 fn.call(this) 与 fn()