1

我正在将 web 应用程序从 dojo 1.5 升级到 1.8(或 1.7.3)。这个应用程序有几个继承自 dijit.Dialog 的自定义模板化小部件。我发现这些根本无法正确渲染。例如,请参阅http://jsfiddle.net/tinyels/XhrWF/1/

如果您将其设置为 dojo 1.5 或 1.6,则它的布局正确。在 1.7 中,它甚至不会show()。在 1.8 中,缺少各种附加点并且按钮不起作用。在调试器中检查它显示它只有一些附加点(titleBar、titleNode、closeButtonNode、closeText、containerNode、gridContainer)并且缺少几个,例如 btnGo。

我需要对小部件(或其模板)进行哪些更改才能使其在较新版本的 Dojo 中工作?

4

1 回答 1

1

我认为这widgetsInTemplate在 Dojo 1.7+ 中不再起作用。您的模板根本没有被解析。您可以手动调用dojo.parser.parse(this.containerNode)(例如 in postCreate),但您将丢失dojoAttachPointdojoAttachEvent生成引用。

在模板中包含小部件的 Dojo 1.7+ 方式是 subclass dijit/_WidgetsInTemplateMixin,在您的情况下:

dojo.require("dijit._WidgetsInTemplateMixin");

dojo.declare("imed.widgets.DapDialog", [dijit.Dialog, dijit._WidgetsInTemplateMixin], {});

一切都应该像以前一样工作。在 jsFiddle 试试:http: //jsfiddle.net/phusick/UEXmF/

于 2012-08-29T07:46:34.723 回答