从嵌套函数访问外部对象(使用backbone.js

发布于 2024-11-07 16:19:12 字数 532 浏览 0 评论 0原文

我正在使用backbone.js 构建一个js 重的应用程序。我多次遇到的一个问题是如何从深层嵌套函数调用外部对象。在下面的代码示例中,我想在发生滑动事件时调用 custom_function 事件。最好的方法是什么?

App.Views.Category = Backbone.View.extend({
    ....,
    render: function () {

        $('#slider').slider({
            min:0,
            max:100,
            slide: function(event, ui) {
               //HOW DO I CALL THE custom_function from here????

            },

        });
    },

    custom_function: function() {
       alert('in custom function');
    },


});

阿斯达夫

I am building a js heavy app using backbone.js. One problem I've run into a couple of times is how to call an outer object from a deep nested function. In the code example below, I would like to call the custom_function event when a slide event occurs. What is the best way to do this?

App.Views.Category = Backbone.View.extend({
    ....,
    render: function () {

        $('#slider').slider({
            min:0,
            max:100,
            slide: function(event, ui) {
               //HOW DO I CALL THE custom_function from here????

            },

        });
    },

    custom_function: function() {
       alert('in custom function');
    },


});

asdf

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

素食主义者 2024-11-14 16:19:12

有两种常见的选择。

您可以将 this 放入 thatself 等对象中,然后调用它。

render: function () {
    var that = this;
    $('#slider').slider({
        min:0,
        max:100,
        slide: function(event, ui) {
           //HOW DO I CALL THE custom_function from here????
           that.custom_function();
        },

    });
},

或者您可以绑定函数的上下文。

render: function () {
    $('#slider').slider({
        min:0,
        max:100,
        slide: (function(event, ui) {
           //HOW DO I CALL THE custom_function from here????
           this.custom_function();
        }).bind(this),

    });
}, 

Function.prototype.bind 仅适用于 ES5,因此请使用 _.bind$.proxy 用于跨浏览器支持

There are two common options.

You can either this into an object like that or self then call it.

render: function () {
    var that = this;
    $('#slider').slider({
        min:0,
        max:100,
        slide: function(event, ui) {
           //HOW DO I CALL THE custom_function from here????
           that.custom_function();
        },

    });
},

Or you can bind the context of the function.

render: function () {
    $('#slider').slider({
        min:0,
        max:100,
        slide: (function(event, ui) {
           //HOW DO I CALL THE custom_function from here????
           this.custom_function();
        }).bind(this),

    });
}, 

Function.prototype.bind is ES5 only so use _.bind or $.proxy for cross browser support

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文