【问题标题】:Nested Objects With YUI and Javascript使用 YUI 和 Javascript 的嵌套对象
【发布时间】:2009-09-04 20:47:57
【问题描述】:

我正在处理一个包含一些 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 并给出“未定义”作为答案。

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

【问题讨论】:

    标签: javascript object yui


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。像魅力一样工作。
    【解决方案2】:

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

    像这样调整你的代码:-

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

    【讨论】:

      猜你喜欢
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多