DOJO自定义对话框-不解析模板文件

DOJO Custom Dialog Box - does not parse template file

本文关键字:文件 自定义 对话框 DOJO      更新时间:2024-05-23

我是DOJO的新手。我有一个自定义小部件,它使用对话框内容的模板文件。我正在延长dijit。对话框。

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.cainerNode给了我"HTMLDIVElement"(父dijit对话框DIV)。

经过多次尝试错误,我无法确定问题的确切位置。如有任何帮助,我们将不胜感激。

调用代码

function opnPop(){
var pop= dijit.byId("customPopup");
    pop.show();
}
<div dojoType="custom.credentials" id="customPopup"/>

注意:*当dijit时。对话框是而不是扩展的*它读取模板文件没有任何问题,也就是说,我可以访问this.mainDIV.innerHTML,它包含我自己的内部html内容。

谢谢。

如果Dialog必须是子类,那么它必须是基类。在这里,它似乎被用作mixin。无论如何,问题出在所使用的模板上。对话框中的代码将解析并使用该模板。因此,这里提到的模板只有一个带有附加点的div元素。没有"containerNode"元素(即附加点),您正试图在js代码中访问它,这将导致错误。

更重要的是,"标题栏"&"titleNode"元素也缺少表单模板,这将在分析模板时出错。为了避免这种情况,需要从js中删除使用这些元素的代码部分,以避免出现错误。因此,小部件的创建将是成功的。试试标准的dijit。对话框的模板。将data-dojo-attach-point="mainDIV"添加到模板中的顶级Dialog的div中。在模板中,可以添加更多的东西,这不会引起任何问题。但是,如果删除任何内容,都会造成问题。如果我们要对类/小部件进行子类化,我们需要遵守现有的代码。