难以将自定义模板对话框从dojo 1.5升级到1.7.3或1.8.0

时间:2012-08-28 16:11:43

标签: dojo

我正在努力将网络应用从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中工作?

1 个答案:

答案 0 :(得分:1)

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

Dojo 1.7+在模板中使用小部件的方法是子类dijit/_WidgetsInTemplateMixin,在你的情况下:

dojo.require("dijit._WidgetsInTemplateMixin");

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

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