我正在尝试将router
绑定到路由器中的方法。这是router
:
define(function(require) {
var Backbone = require('backbone');
var User = require('models/user.model');
var Router = Backbone.Router.extend({
user: null,
initialize: function() {
_.bind(this.updateUser, this);
Backbone.on('userAuthenticated', this.updateUser);
this.user = new User();
this.user.fetch();
},
updateUser: function() {
debugger;
}
});
return Router;
});
我将方法updateUser
绑定到我的router
。触发事件userAuthenticated
后,我想在updateUser
中运行代码。事件被抛出并且方法被调用,但是当我进入updateUser
方法时,我的this
不是我期望的router
,而是全局对象。我做错了什么?
答案 0 :(得分:1)
我在几条评论中指出_.bind()
会返回一个新函数,您的示例不会将其分配给任何函数。但是,更简单的解决方案是使用on()
的可选第三个参数:
Backbone.on('userAuthenticated', this.updateUser, this);