我正在努力将网络应用从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中工作?
答案 0 :(得分:1)
我认为widgetsInTemplate
在Dojo 1.7+中不再起作用了。您的模板根本不会被解析。您可以手动拨打dojo.parser.parse(this.containerNode)
(例如在postCreate
中),但您将丢失dojoAttachPoint
和dojoAttachEvent
生成的引用。
Dojo 1.7+在模板中使用小部件的方法是子类dijit/_WidgetsInTemplateMixin
,在你的情况下:
dojo.require("dijit._WidgetsInTemplateMixin");
dojo.declare("imed.widgets.DapDialog", [dijit.Dialog, dijit._WidgetsInTemplateMixin], {});
所有人都应该像以前一样工作。在jsFiddle上试试:http://jsfiddle.net/phusick/UEXmF/