![](/img/trans.png)
[英]Dojo does not parse widget declarative in a template html of a custom widget
[英]DOJO Custom Dialog Box - does not parse template file
我是DOJO的新手。 我有一個自定義窗口小部件,它使用模板文件作為對話框的內容。 我在腳本文件中擴展了dijit.Dialog。
dojo.declare(
"custom.credentials",
[dijit._WidgetBase, dijit._Templated,dijit._WidgetsInTemplateMixin,**dijit.Dialog**],
{
templatePath: dojo.moduleUrl("custom", "templates/credentials.html"),
....
....
postCreate: function() {
this.inherited(arguments);
alert(this.containerNode);
alert(this.mainDIV);
},
});
我的模板測試文件如下所示
<div data-dojo-attach-point="mainDIV">
Login Dialog Box template here
</div>
由於某種原因,當我在this.mainDIV上發出警報時,我得到“未定義”。 它不讀取模板文件。 另外,this.containerNode給了我“ HTMLDIVElement”(父dijit對話框DIV)。
經過大量的試驗錯誤后,我仍然無法弄清楚問題出在哪里。 任何幫助將不勝感激。
呼叫碼
function opnPop(){
var pop= dijit.byId("customPopup");
pop.show();
}
<div dojoType="custom.credentials" id="customPopup"/>
注意: * 當dijit.Dialog 沒有擴展時 *它讀取模板文件沒有任何問題,即,我能夠訪問this.mainDIV.innerHTML,其中包含我自己的內部html內容。
謝謝。
如果Dialog必須被子類化,則它必須是基類。 在這里,它似乎用作混入。 無論如何,問題出在所使用的模板上。 對話框中的代碼將解析並使用該模板。 因此,此處提到的模板只不過是帶有附加點的div元素。 沒有“ containerNode ”元素(即附加點),並且您試圖在js代碼中訪問它,這將導致錯誤。
更重要的是,“ titleBar ”和“ titleNode ”元素也缺少表單模板,這會在解析模板時產生錯誤。 為了避免這種情況,需要從js中刪除使用這些元素的代碼部分,以免出錯。 因此,小部件創建將成功。 嘗試使用標准的dijit.Dialog模板。 將data-dojo-attach-point="mainDIV"
到模板中頂級Dialog的div中。 在模板中,可以添加更多內容,不會引起任何問題。 但是,如果除去任何東西,將會引起問題。 如果要對類/小部件進行子分類,則需要遵守現有代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.