我正在处理一个包含一些YUI对象的Javascript对象。关键是,我的对象需要包含它自己的一组YUI选项卡,以便我可以在同一页面上显示我的对象的多个实例,并让选项卡控制它们自己的对象实例。
我将其设置如下:
var Scheduler = function(divid,startDate,mode){
this.tabView = null;
...
this.init = function(){
this.tabView.appendTo(this.calendar_cell);
this.tabView.addTab( new YAHOO.widget.Tab({
label: 'Day',
content:'<div id="'+ this.calendar_day_div +'" style="width:100%; height:auto;"></div>'
}));
var tab0 = this.tabView.getTab(0);
tab0.addListener('click', this.showWeek);
}
this.showWeek(){
alert(this);
}
});
这是问题所在。我会期待警报(这);在this.showWeek中提醒调度程序的实例。相反,它给了我标签li。我尝试警告this.parent并给出'undefined'作为答案。
我该如何设置它来做我需要做的事情?
答案 0 :(得分:1)
addListenter方法采用范围参数。因此,您可以将呼叫更改为以下内容以解决您的问题(因为您使用的是YUI):
tab0.addListener('click', this.showWeek, undefined, this);
答案 1 :(得分:0)
将函数附加到对象事件(在本例中为tab0持有的对象)时,通常该对象在执行时成为函数的this
上下文。
像这样调整你的代码: -
var self = this;
this.showWeek(){
alert(self);
}