我有这个基本代码:
app.Modules.myModule = {
init: function(){
this.bindEvents();
},
bindEvents: function(){
app.Events.on('user:added', this.userAdded.call(this));
this.username = $('#username');
},
userAdded: function(event, params){
console.log(params);
this.username.text(params.username);
}
};
现在我遇到的问题是,如果我按原样调用this.userAdded,则params不会传递给userAdded函数。如果我不使用'call'并且只是在userAdded函数中执行this.userAdded,那么'this'的上下文就是jQuery事件而不是'app.Modules.myModule',就像我需要它一样。 / p>
所以我的问题是,如何在userAdded函数中将'this'的上下文保存到Object本身(myModule)并且能够将params参数传递给它?
答案 0 :(得分:1)
如果将模块定义为函数,则可以在实例化时将上下文设置为变量。例如:
app.Modules.myModule = function(){
var context = this;
context.init = function(){
context.bindEvents();
};
context.bindEvents = function(){
app.Events.on('user:added', context.userAdded);
context.username = $('#username');
};
context.userAdded = function(event, params){
console.log(params);
context.username.text(params.username);
} ;
};
var module = new app.Modules.myModule();
上下文变量现在将引用对象的上下文,并可在函数中使用。确保在初始化对象时使用“new”关键字。