2012-08-07 5 views
1

이 기사 (Using dojo.behavior)를 읽고 이벤트 처리 모듈로 내 프로젝트에서 behavior 모듈을 사용하고 싶습니다.dojo/widgets에서 dojo/behavior 사용 방법은 무엇입니까?

DOM 노드의 경우 훌륭하게 작동하지만 Dojo 위젯에서 어떻게 사용할 수 있습니까? 내가 행동 모듈을 사용하는 경우

behavior.add({ 
    "#myButton": { 
     onClick: buttonHandler 
    } 
}); 

에게, 그것을

var buttonNode = dijit.byId("myButton"); 
on(buttonNode, "onClick", buttonHandler); 

또는

dijit.byId("myButton").onClick = buttonHandler; 

을하지만 : 나는 도장을 사용하는 경우

/모듈, 나는 이런 식으로 작업을 수행 할 수 있습니다 작동하지 않습니다. (물론 내가 페이지 렌더링을 마친 후에는 behavior.apply()를 호출했습니다. 아래 코드는 작동하지 않습니다.

behavior.add({ 
    "[widgetid='myButton']": { 
     onClick: buttonHandler 
    } 
}); 

위의 코드가 작동하지 않는 이유는 버튼 위젯이 많은 s와 inner로 구성되어 있기 때문입니다. 그리고 data-dojo-id로 지정된 id를 사용하면, 대신에 이벤트가 바인드되기를 기대하는 대신에 가리킬 것입니다.

나는이 상황을 걸을 수있는 솔루션,

behavior.add({ 
    "[widgetid='myButton'] input": { 
    onclick: buttonHandler 
    } 
} 

을 발견하지만, CSS 선택이 너무 복잡하고 위젯이 어떤 유형에 따라 달라집니다.

dom 노드와 마찬가지로 위젯에서 dojo/behavior를 적용하는 좋은 해결책이 있습니까?

답변

0

실제로 위젯 객체에 이벤트를 연결하는 것처럼 보이지만 behavior은 DOM에 대신 액세스하도록 설계되었습니다. 그래서, 나는 당신이 당신의 해결 방법에 붙어 있다고 생각합니다.

+0

예. 당신이 말한 것은 제가 직면하고있는 문제입니다. 좋은 해결책이 있습니까? – Programus

관련 문제