1

我正在使用 facebook api 和 phonegap 构建一个backbone.js 应用程序。

在我的用户模型中,我试图附加一个监听器以查看用户何时登录。

Myapp.Models.User = Backbone.Model.extend({
    初始化:函数(){
           FB.Event.subscribe('auth.login', function(response){
            console.log('登录事件');
            this.get_me();

        });
    },
    获取我:函数(){
    console.log('使用api获取用户信息');
    }
});

当然,当我这样做时,this(我相信)附加到 FB,而不是 Myapp。我试过了

var this_user = 这个;
 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 从来没有在回调中传递第二个参数,所以它最终是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 回答