改变"这"主干集合的范围。创建

时间:2015-09-24 10:27:54

标签: javascript backbone.js marionette

我是以肮脏的方式做到这一点,想知道是否有更好的方式:

this.collection.create(
    {
        'name': this.$('.name').val()
    },
    {
        success: function() {
            alert(_this);
        },
        error: function() {
            alert(_this);
        },
        wait: true
    }
);

2 个答案:

答案 0 :(得分:1)

我假设你已经在某个地方设置了var _this = this;但是忘了把它包括在内。

您可以使用Function.prototype.bind(EcmaScript 5)将成功和错误回调绑定到正确的上下文。

success: function() {
    alert(this);
}.bind(this),

error: function() {
    alert(this);
}.bind(this),

这在IE9及以上版本中得到支持。

(如果由于某种原因你支持IE8,MDN页面上有一个polyfill)

答案 1 :(得分:1)

使用最新的backbonejs,您可以使用context关键字通过选项传递上下文,并且根本不使用任何polyfill:

this.collection.create(
    {
        'name': this.$('.name').val()
    },
    {
        success: function() {
            alert(this);
        },
        error: function() {
            alert(this);
        },
        context: this,
        wait: true
    }
);