2009-09-04 5 views
1

일부 YUI 객체가 포함 된 Javascript 객체에서 작업하고 있습니다. 핵심은, 내 객체가 자신의 YUI 탭 세트를 포함해야하므로 동일한 객체에 여러 객체를 표시 할 수 있고 탭이 자체 객체 인스턴스를 제어 할 수 있습니다.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)를 기대할 것이다. 스케줄러의 인스턴스를 알려주는 this.showWeek에서. 대신, 그것은 나에게 탭 리를주고있다. 나는 this.parent에게 경고하고 "undefined"라는 답을 주려고 노력했다.

내가해야 할 일을 어떻게 설정해야합니까?

답변

1

addListenter 방법은 범위 인수를합니다. 따라서 다음을 호출하여 문제를 해결할 수 있습니다 (YUI를 사용하고 있으므로).

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

고맙습니다. 매력처럼 일했습니다. –

+0

당신은 오신 것을 환영합니다. – seth

0

개체의 이벤트 (이 경우 tab0에 의해 보유 된 개체)에 함수를 첨부하면 해당 개체는 일반적으로 해당 개체가 실행될 때 this 컨텍스트가됩니다.

은 다음과 같이 코드를 조정 : -

var self = this; 
this.showWeek(){ 
    alert(self); 
} 
관련 문제