簡體   English   中英

DOJO自定義對話框-不解析模板文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM