javascript - 有没有更好的方法将 "this"对象传递给回调函数?

标签 javascript backbone.js

我是 backbonejs 的新手。我正在尝试将正确的 this 对象传递给回调函数,其中该函数是 View 的一种方法。

我目前的解决方案:

APP.LocationFormView = APP.View.extend({
    initialize: function () {    
        if (navigator.geolocation) {
            var that = this;

            var success = function(position) {
                _.bind(that.onSuccessUpdatePos, that, position)();
            };

            var error = function(error) {
                _.bind(that.onFailUpdatePos, that, error)();
            }

            navigator.geolocation.getCurrentPosition(success, 
                                                     error);
        } else {

        }
    },

    onSuccessUpdatePos: function(position) {
        // We can access "this" now
    },

    onFailUpdatePos : function(error) {
        // We can access "this" now
    }
});

这是实现我想要的目标的正确方法吗? 有没有更简洁的解决方案?

最佳答案

这就是我要做的。 bindAll 的一个好处是,如果您向 LocationFormView 添加额外的功能,它们将自动绑定(bind) this

APP.LocationFormView = APP.View.extend({
    initialize: function () {   
        _.bindAll(this); 
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(this.onSuccessUpdatePos, 
                                                     this.onFailUpdatePos);
        } else {

        }
    },

    onSuccessUpdatePos: function(position) {
        // We can access "this" now
    },

    onFailUpdatePos : function(error) {
        // We can access "this" now
    }
});

关于javascript - 有没有更好的方法将 "this"对象传递给回调函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9493657/

相关文章:

c# - 我应该在 ASP.NET 页面中嵌入的 IFrame 中加载 javascript 吗?

javascript - Backbone.js 用类结构代替原型(prototype)不是一种倒退吗?

javascript - Backbone .js : Structuring Application for fixed side panels

javascript - 混音 : middleware pattern to run code before loader on every request?

javascript - 根据对象数组中的第一个 "row"重命名 JSON 键

javascript - 停止滚动页面,滚动轮播

javascript - 我如何解析此 JSON 以便在 Backbone View 中使用

javascript - 如何通过 API 创建工作表后获取 Google Sheet Id?

jquery - Requirejs - 仅在条件为真时加载模块

ruby-on-rails - 使用 rails 和backbone.js 使我的应用程序更加干燥