2012-06-24 2 views
10

필자가 작성한 Dojo 위젯에는 사용자 페이지에 레이블과 입력 상자가 추가되어있다.Dojo 위젯 템플리트에서 고유 ID는 어떻게 작성합니까?

labelfor 속성에는 HTML ID 값이 필요하지만 같은 페이지에 여러 인스턴스가 작성되는 경우 Dojo 위젯에는 ID가 들어 있으면 안됩니다.

이렇게 충돌하는 요구 사항을 해결하는 방법에 대한 제안 사항이 있습니까? 박스 아웃

답변

19

, 이것은는 Dijit 레지스트리를 구축 할 경우 구성 매개 변수가 존재하지 않는 경우은 widgetid (this.id)을 설정하는 방법입니다

constructor: function(args) { args=args || {}; 
    this.id = args.id || dijit.registry.getUniqueId(this.declaredClass) 
} 

템플릿 문자열 대체 작동을, 그래서 당신은 속성이있는 경우 클래스에서, foo는이 방법은 템플릿에이 을 배치하는 말은 다음과 같은 : 템플릿에 어딘가에 당신이 알이 귀하의 경우에는

templateString = '<div class="${foo}">'; 

, http://dojotoolkit.org/documentation/tutorials/1.6/templated/

계속 읽기 : abel-> 입력 쌍, 그것은 그래서

는 당분간 조금 오래된 Allthough

, 이것은 시작하기에 아주 좋은 장소입니다이

<div><!--domNode--> 
    <table> 
     <td><label for="${id}-edit-title">Title</label></td> 
     <td><input id="${id}-edit-title" type="text" /></td> 
    </table> 
</div> 

처럼 간다 dojo.Stateful get/set 메커니즘

마지막으로 dijit._WidgetsInTemplateMixin으로 변경하십시오.

+1

머리말 : 템플릿에서 $ {id}를 참조하는 것만으로도 충분합니다. 위젯의 라이프 사이클 메소드에 추가 코드가 없습니다. – belzebu

+0

as 'out the box':) 첫 번째 코드 블록은 dijit.widget이 자동으로 id로 설정하는 것입니다 – mschr