나는 Dojo 대화 상자의 내용을 추가/변경하기 위해 많은 링크를 보았다. 나는 이런 식으로 뭔가를 할 때마다 This was the most promising.dijit에 내용 추가하기 대화 상자
그러나 :
<div class="djDialog" id="dgViewer" data-dojo-type="TemplatedDialog" data-dojo-props="title: 'My Dialog', draggable:false"></div>
대화 상자 템플릿 :
<div class="dijitDialog" role="dialog" aria-labelledby="${id}_title">
<div data-dojo-attach-point="titleBar" class="dijitDialogTitleBar">
<span data-dojo-attach-point="titleNode" class="dijitDialogTitle" id="${id}_title"></span>
<span data-dojo-attach-point="closeButtonNode" class="dijitDialogCloseIcon" data-dojo-attach-event="ondijitclick: onCancel" title="${buttonCancel}" role="button" tabIndex="-1">
<span data-dojo-attach-point="closeText" class="closeText" title="${buttonCancel}">x</span>
</span>
</div>
<!-- containerNode from original Dialog template -->
<div data-dojo-attach-point="containerNode" class="dijitDialogPaneContent">
<!-- All "custom" content -->
<div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="design:'headline'" style="height:300px">
<div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'center'">
</div>
<div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'top'">
<button data-dojo-type="dijit.form.Button">Edit</button>
<button data-dojo-type="dijit.form.Button">Status</button>
</div>
</div>
<!-- End "custom" content -->
</div>
</div>
사용자 정의 대화 상자 클래스 :
define([
'dojo/_base/declare',
'dijit/Dialog',
'dijit/_TemplatedMixin',
'dojo/text!./dialog_templates/View.html'],
function(
declare,
Dialog,
_Mixin,
_template){
return declare('TemplatedDialog', [Dialog, _Mixin], {
templateString : _template,
constructor : function(){
}
})
})
대화는 HTML에 선언
<div data-dojo-attach-point="containerNode" class="dijitDialogPaneContent" style="width: auto; height: auto; "></div>
을 ... 및 콘텐츠 이해야 빈 노드 : 내 콘솔에서
난 그냥 볼 (크롬 사용).
지금까지 템플릿의 관점에서 dijit.Dialog를 성공적으로 확장 한 것으로 보이는 사람을 찾지 못했습니다. 이것이 가능한가?
편집이 템플릿에 몇 가지 변화를 시도 후
:
<div class="dijitDialog" role="dialog" aria-labelledby="${id}_title">
<div data-dojo-attach-point="titleBar" class="dijitDialogTitleBar">
<span data-dojo-attach-point="titleNode" class="dijitDialogTitle" id="${id}_title"></span>
<span data-dojo-attach-point="closeButtonNode" class="dijitDialogCloseIcon" data-dojo-attach-event="ondijitclick: onCancel" title="${buttonCancel}" role="button" tabIndex="-1">
<span data-dojo-attach-point="closeText" class="closeText" title="${buttonCancel}">x</span>
</span>
</div>
<!-- containerNode from original Dialog template -->
<div class="dijitDialogPaneContent">
<div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="design:'headline'" style="height:100%;width:100%">
<div data-dojo-attach-point="containerNode" data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'center'"></div>
</div>
<div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'bottom'">
<button data-dojo-type="dijit.form.Button">Edit</button>
</div>
</div>
</div>
이 오류 Uncaught TypeError: Cannot read property '0' of undefined
가 발생되고있다. 도움이된다면 이것은 스택입니다. 디버깅을 돕기 위해 Google CDN의 압축되지 않은 버전을 사용하고 있습니다. containerNode
에서 및 -props
제거
_childElements dojo.js.uncompressed.js:8341
getStepQueryFunc dojo.js.uncompressed.js:8597
query dojo.js.uncompressed.js:9005
query dojo.js.uncompressed.js:5248
_2._checkIfSingleChild _ContentPaneResizeMixin.js:2
_4._size Dialog.js:2
_4.show Dialog.js:2
는이 문제를 해결합니다,하지만 여전히 작동하는 사용자 정의 템플릿 대화를 가진 가까이 가지 못하고 있어요.
응답 해 주셔서 감사합니다. 프로세스를 다시 생각해 보았지만, 그 바이올린은 콘솔에 오류를 던지고 있습니다. 어떤 종류의'data-dojo-type'을 추가하는 것처럼 보입니다. 'containerNode' 자체는 오류를 제거합니다. 실제로드 된 템플릿에 대한 업데이트를 참조하십시오. – Phix
그래, 사실은 .. 템플릿 내부의 위젯을 렌더링 할 때 발생하는 문제입니다. 나는 그것이 다른 레이아웃 구성 요소를 포함하는 레이아웃 구성 요소와 관련이 있다고 믿습니다.하지만 저는 확신 할 수 없습니다. 그러나이 답변에 대한 녀석은 아닙니다 .. 대화와 경계 레이아웃은 서로 경쟁하여 어느 크기 생산하는. 대화 상자에서 contentpaneresizemixin을 비활성화하고 고정 된 크기로 설정하십시오. – mschr
올바른 방향으로 밀어 주셔서 감사합니다. mschr! 해결책을 찾으면 여기에 내 결과를 게시하겠습니다. 건배! – Phix