2014-02-19 6 views
0

도장 모듈이 있는데 키워드를 사용하고 싶지만 문제가 있습니다.이 키워드 dojo 모듈 이벤트 핸들러를 사용합니다.

require(["dojo/_base/declare", "dojo/_base/lang","dojo/query", "dojo/on", 
      "dojo/dom", "dojo/NodeList-traverse"], 
     function(declare, lang, query, on, dom, nls) { 

      var mainWidget = declare(null,{ 
       constructor:function(){ 
        this.onItemClicked = lang.hitch(this, this.onItemClicked);   

        on(dom.byId("myList"), ".toggle:click", this.onItemClicked); 
       }, 

       onItemClicked: function (event) { 
        dom.byId("result").innerHTML = this._calculate(); 
        dom.byId("result").innerHTML = query(this).parent('li'); 
       }, 

       _calculate:function(){ 
        return 10 * 10; 
       } 
      }); 

      var wg = new mainWidget(); 

}); 

나는 키워드가 이벤트 핸들러를 onItemClicked 사용하고 싶습니다. _ 이라는 메토 (methot)에 액세스하려면을 계산하십시오. 그리고 에 액세스하고 싶습니다. 쿼리 (this) 오브젝트

this._calculate()가 작동하지만 쿼리 (this)가 요소를 반환해야하지만 반환하지 않습니다.

jsfiddle 링크 당신은 당신이 원하는 상황을 캡처 어떻게 든 필요

답변

0

그것을 확인하고 DOM : 높은 순서 기능을 수행 할 수있는 좋은 방법이있다 클릭 한 노드 (query() 함수의 경우)?

정말 큰 실수입니다. 단일 컨텍스트를 사용하여 두 개의 객체를 참조하려는 경우 좋지 않을뿐만 아니라 코드를 읽을 수 없게 만듭니다. 당신이 사용하고 있기 때문에

dom.byId("result").innerHTML += query(event.target).parent('li'); 

그러나 당신이 당신의 #result HTML을 무시하고 있다는 것을 잊지 마세요 :

그냥 단지 다음과 같이 클릭 된 요소를 검색 할 이벤트 핸들러의 target 속성을 사용

dom.byId("result").innerHTML = ...; 

계산 된 값 (100) 옆에 추가하려면 += 연산자를 사용하십시오.


작은 노트 : 당신은 위젯과 오브젝트를 모두 결합하여 대상 요소 모두에 대해 this 컨텍스트를 사용할 수 있지만, 내가 말했듯이, 즉 할 수있는 좋은 생각이 아니다.

0

입니다.

dojo.connect(window, "onload", function(){ 
    require(["dojo/_base/declare", 
     "dojo/_base/lang", 
     "dojo/query", 
     "dojo/on", 
     "dojo/dom", 
     "dojo/NodeList-traverse"], 
    function(declare, lang, query, on, dom, nls) { 
     var createBtnClicked = function(context){ 
      return function(){ 
       dom.byId("result").innerHTML = context._calculate(); 
       dom.byId("result").innerHTML = query(this).parent('li'); 
      }; 
     } 

     var mainWidget = declare(null,{ 
      constructor: function(){ 
       //this.onBtnClicked = lang.hitch(this, this.onBtnClicked);   

       on(dom.byId("myList"), ".toggle:click, .toggle:keyup", createBtnClicked(this)); 
      }, 

      _calculate:function(){ 
       return 10 * 10; 
      } 
     }); 

     var wg = new mainWidget(); 
}); 

내가 잘 이해한다면 그래서, this 맥락합니다 (_calculate() 기능) 위젯을 모두해야한다 여기 http://fiddle.jshell.net/eL7mB/11/

관련 문제