0

コレクションを同期すると、サーバーは、新しいモデルとしてコレクションに追加するJSONオブジェクトを返します。私はそれを次のように設定しました:

syncCollection: function() {    
        Backbone.sync('create', this,  {
          success: function (msg) {
              console.log(this);
              this.add(msg, {at: 0});

          }
    }, this);
    }

問題は、「this」がコレクションを指しているようには見えず、代わりにデフォルトでグローバルウィンドウオブジェクトになっていることです。コレクションにバインドしようとしthisましたが、機能しないようです。

initialize: function() {
        _.bindAll(this, 'syncCollection');
    },

.bindを使用してthis、ウィンドウオブジェクトではなくコレクションを指すようにするにはどうすればよいですか?

4

1 に答える 1

1

var that = this外側の関数の先頭 (つまり の直前) に追加し、内側の関数 (つまり)Backbone.syncで置き換えます。thisthatsuccess

注: JavaScript ではthis、常に実行中の関数の所有者を参照するか、関数がメソッドであるオブジェクトを参照します。

_.bindAllところで、使用する必要はありません_.bind。十分です。

于 2013-01-10T01:36:32.680 に答える