Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改“;这";主干集合的作用域。创建_Javascript_Backbone.js_Marionette - Fatal编程技术网

Javascript 更改“;这";主干集合的作用域。创建

Javascript 更改“;这";主干集合的作用域。创建,javascript,backbone.js,marionette,Javascript,Backbone.js,Marionette,我用肮脏的方式做这件事,不知道是否有更好的方式: this.collection.create( { 'name': this.$('.name').val() }, { success: function() { alert(_this); }, error: function() { alert(_this); }, wait

我用肮脏的方式做这件事,不知道是否有更好的方式:

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

我假设您已经设置了
var\u this=this某个地方,但忘了包含它

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

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

error: function() {
    alert(this);
}.bind(this),
这在IE9及更高版本中得到了支持


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

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

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