1

Facebook APIとphonegapを使用してbackbone.jsアプリを構築しています。

私の User モデルでは、リスナーをアタッチして、ユーザーがいつログインしたかを確認しようとしています。

Myapp.Models.User = Backbone.Model.extend({
    初期化: 関数(){
           FB.Event.subscribe('auth.login', function(response){
            console.log('ログインイベント');
            this.get_me();

        });
    }、
    get_me: 関数(){
    console.log('API を使用してユーザーの詳細を取得する');
    }
});

もちろん、私がこれを行うと、thisMyapp ではなく FB に接続されます (私は信じています)。私はもう試した

var this_user = this;
 FB.Event.subscribe('auth.login', function(response,this_user){
   this_user.get_user();
}

しかし、それでも失敗します。

の使用方法に関するあらゆる種類のブログを読みましthisたが、複数のオブジェクトを操作するときに実際に理解しているブログや、元のオブジェクトを参照する方法を理解できないようです。

4

2 に答える 2

2

あなたが持っているものはうまくいくはずですが、この部分に注意してください:

var this_user = this;
 FB.Event.subscribe('auth.login', function(response,this_user){
   this_user.get_user();
}

this_userパラメーターは無名関数の宣言に含まれていてはなりません。これは、Facebook がコールバックで 2 番目のパラメーターを渡さないためnullです。this_user.get_user()実際、ステートメントで JS エラーを受け取っているはずです。

var this_user = this;
 FB.Event.subscribe('auth.login', function(response){
   this_user.get_user();
}
于 2012-10-16T04:06:20.947 に答える
1
var this_user = this;
 FB.Event.subscribe('auth.login', function(response,this_user){
   this_user.get_user();
}

同じ名前の引数があるため、そのthis_userルックアップはその親スコープに解決されません。どちらかを変更してください。

于 2012-10-16T04:05:48.840 に答える