0

このようなバックボーンの成功コールバックに関数を渡したいと思います

this.model.fetch({
    success: this.setup
});

ただし、それは機能しません。環境全体を渡して、そのような関数内にラップする必要があります。

var that = this;
this.model.fetch({
    success: function(){
        that.setup();
    }
});

なぜ私はこれを行うことができないのですか?セットアップ関数を so のように親にバインドしても_.bind( this.setup, this );、適切な this (その親) は使用されません。ただし、関数にラップされていない場合のみ...

4

2 に答える 2

-1

「これ」は定義しているオブジェクトであるため、機能しません({成功:this.setup})これを試してください:

var that = this;
this.model.fetch({
      success: that.setup
    }
});

しかし、私はそれがあまり好きではありません。イベント ハンドラーは単にイベントを処理し、(setup() メソッドのような) 処理も行うためです。この場合、クロージャーでオブジェクトが失われる可能性があります。

于 2012-10-04T15:12:39.760 に答える