2012-04-12 3 views
0

here과 같이 Dojo의 pub/sub 주제 모듈을 사용하려고합니다. 커스텀 위젯의 startup() 메쏘드 안에있는 이벤트를 구독하고 있으며, 토픽이 트리거 될 때 위젯을 수정하고 싶습니다.topic.subscribe의 콜백에서 위젯에 액세스

topic.subscribe() 콜백에서 위젯에 액세스하려면 어떻게해야합니까? 콜백 내부에서 this은 위젯을 참조하지 않습니다. 내가 무엇을 의미하는지 모르겠다 ... this 개체는 emiton 함수뿐만 아니라 declaredClass 필드 ("uniqName_0")를 포함합니다.

답변

1
당신은 여기에 옵션이 몇 가지있다

w idget에는 phusick이 설명하는 것처럼 문제를 처리 할 수있는 편리한 메소드가 있습니다.

시작 방법에

, 당신은 위젯이 다른 편리한 방법

this.unsubscribe 
this.connect 
this.disconnect 

subscribeconnect 방법을 사용하여 unsubscribedisconnect 방법이 자동으로 호출됩니다있다

startup: function() { 
    this.inherited(arguments); 

    this.subscribe('topic/some', '_onTopic'); 
}, 

_onTopic: function() { 
    this.something // 'this' is the widget 
} 

을 쓸 수 있습니다 때 위젯이 파괴되었습니다.

http://dojotoolkit.org/api/dijit/_WidgetBase

1

이 위젯 인스턴스를 나타내는 경우 dojo/_base/lang::hitch을 사용하여 위젯 메소드를 구독 할 때 콜백 기능의 범위를 변경하려고합니다.

  1. 익명 함수 : 위젯의

    topic.subscribe("topic/some", lang.hitch(this, function() { 
        // your callback logic here 
    })); 
    
  2. 방법 :

    topic.subscribe("topic/some", lang.hitch(this, "callbackMethod")); 
    

가 직접보기 : http://jsfiddle.net/phusick/N7NGB/

관련 문제