2017-03-20 21 views
0

내 프로젝트에 dojo 1.9를 사용하고 있습니다. 나는 내가 사용하는 각각의 dijits에 대해 "id"를주는 접근법을 따라왔다. 예 :dojo 위젯에 "id"를 부여하는 것이 좋은 습관입니까?

var cp = new dijit.layout.ContentPane({\ 
id:"myContentPane", 
content:"Test" 
}); 

id를 할당하는 것이 좋습니다. 이유가 있습니다 예를 들어 새 콘텐츠로 cp를 다시로드하려면 cp가 이미 만들어 졌는지 확인 (id로 확인)해야합니다. 그렇다면 콘텐츠를 설정하고 그렇지 않다면 콘텐츠를 만듭니다. 그래서 위의 코드는 그래서이는 Dijit 이미 생성 여부를 여부를 확인하기 위해 ID를 사용

if(!dijit.byId("myContentPane"){ 
var cp = new dijit.layout.ContentPane({\ 
id:"myContentPane", 
content:"Test" 
}); 
}else{ 
dijit.byId("myContentPane").set("content","new content"); 
} 

로 변경됩니다. 아주 드물게, 나는 이드를 사용하여 dijit을 파괴합니다.

감사합니다, 만주

답변

0

나는 항상 독특한하여 이유를 위젯을 확인하는 것이 좋습니다 생각 : 당신은 쉽고 간결한 방법으로 dijit/registry를 사용하여 위젯을 검색 할 수 있습니다

  • DOM을 쿼리하지 않고 사용의

예 :

매우 개인적인 선택이다
require(["dijit/registry"], function(registry){ 
    var widget = registry.byNode(domNode); 
}); 
+0

더 이하이 내 dijits에 액세스하는 방법입니다 오늘. 대답을 주셔서 감사합니다 –

+0

@ ManjunathaMuniyappa 안녕하세요, 내 대답 유용 발견 한 경우 내 대답을 받아 왼쪽의 진드기와 화살표 아이콘을 클릭하는 것을 잊지 마세요 :). 감사합니다 – GibboK

1

.
그러나 경험상 여러 개의 독립적 인 도우 모듈로 만들어진 복잡한 단일 페이지 응용 프로그램에서는 ID가 매우 약합니다.
내가 일하고있는 프로젝트에서 나는 완전히 그들을 금지하고 대신에 첨부 파일, 클래스 속성 및 위젯 API에 의존합니다.

귀하의 예에서는 var cp = new dijit.layout.ContentPane({이 위젯으로 간주됩니다. 그래서 내가 할 것이다 :

_setContentAttr: function(content) { if(!this._contentPane) { this._contentPane = new dijit.layout.ContentPane({content: content}); } else { this._contentPane.set('content', content); } }

내가 ID에 의존 결코이 길을.

결론은 다음과 같습니다. 프로젝트 및 복잡성에 따라 다릅니다.

  • 단순한 프로젝트에서는 ID를 사용하지 않는 것이 좋습니다.
  • 복잡한 것이면 부서지기 쉽고 그렇지 않은 것이 좋습니다. 1.9 사용 AMD는, 당신은 또한 "dijit.layout.ContentPane"를 사용하지 않도록하고 오히려 변수를 사용한다 도장으로 BTW

는 :

require(["dijit/layout/ContentPane"], function(ContentPane){ var cp = new ContentPane(); });

+0

답변 주셔서 감사합니다. 그건 그렇고, 당신은 여러 contentPane 예 : TabContainer가 둘 이상있을 경우 어떻게 처리 할 것인가? 제 경우에는 약 12 ​​개의 내용 창을 가진 tabcontainer가 있습니다 –

+0

해시 맵에 배열로 저장할 수 있습니다.그들은 모두 기능적으로 의미가 있으므로''{{user : CP1, settings : CP2, notifications : CP3}}''와 같은 것을 가질 수 있습니다. – ben