我正在用facebook api和phonegap构建一个backbone.js应用程序。
在我的用户模型中,我正在尝试附加一个监听器以查看用户何时登录。
Myapp.Models.User = Backbone.Model.extend({ initialize: function(){ FB.Event.subscribe('auth.login', function(response){ console.log('logged-in event'); this.get_me(); }); }, get_me: function(){ console.log('use the api to get user details'); } });
当然,当我这样做时,this
是(我相信)附加到FB,而不是Myapp。
我试过了
var this_user = this; FB.Event.subscribe('auth.login', function(response,this_user){ this_user.get_user(); }
但仍然失败。
我已经阅读了各种关于如何使用this
的博客,但在使用多个对象时似乎无法获得我真正理解的博客,以及如何回溯原始对象。
答案 0 :(得分: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();
}
答案 1 :(得分:1)
var this_user = this;
FB.Event.subscribe('auth.login', function(response,this_user){
this_user.get_user();
}
由于您具有相同名称的参数,this_user
查找将无法解析为其父作用域。改变其中一个。