使用YUI和Javascript的嵌套对象

时间:2009-09-04 20:47:58

标签: javascript object yui

我正在处理一个包含一些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'作为答案。

我该如何设置它来做我需要做的事情?

2 个答案:

答案 0 :(得分:1)

addListenter方法采用范围参数。因此,您可以将呼叫更改为以下内容以解决您的问题(因为您使用的是YUI):

tab0.addListener('click', this.showWeek, undefined, this);

答案 1 :(得分:0)

将函数附加到对象事件(在本例中为tab0持有的对象)时,通常该对象在执行时成为函数的this上下文。

像这样调整你的代码: -

var self = this;
this.showWeek(){
  alert(self);
}