Widget Dojo小部件和装饰器模式?

Widget Dojo小部件和装饰器模式?,widget,dojo,Widget,Dojo,有人能帮我在Dijit小部件上应用decorator模式吗 例如,给定一个FormA_小部件,它显示一个带有一些输入文本和按钮的表单。 我们的想法是创建一个FormB_小部件,它“扩展”了FormA_小部件,用更多的单选按钮、输入等来装饰它 我知道如何创建模板化的自定义小部件,以及如何“扩展”小部件,我需要知道如何在FormA\u小部件中的某个位置“注入”FormB\u小部件的模板,以添加所需的“装饰2” 提前感谢。查看我创建的示例: 这是最简单的解决方案,但它需要对格式进行一些微小的更改: v

有人能帮我在Dijit小部件上应用decorator模式吗

例如,给定一个
FormA_小部件
,它显示一个带有一些输入文本和按钮的表单。 我们的想法是创建一个
FormB_小部件
,它“扩展”了
FormA_小部件
,用更多的单选按钮、输入等来装饰它

我知道如何创建模板化的自定义小部件,以及如何“扩展”小部件,我需要知道如何在
FormA\u小部件中的某个位置“注入”FormB\u小部件的模板,以添加所需的“装饰2”


提前感谢。

查看我创建的示例:

这是最简单的解决方案,但它需要对
格式进行一些微小的更改:

var FormB = declare([FormA], {

    templateExtensionString: template // FormB template (dojo/text!./FormB.html)

});
格式js

var FormA = declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {   
    templateString: template,

    templateExtensionString: "" // <= add `templateExtensionString` property
});
N.B.:要防止
\u TemplatedMixin
在字符串中转义引号,请在“!“在完整变量名之前

现在您可以扩展
FormA

var FormB = declare([FormA], {

    templateExtensionString: template // FormB template (dojo/text!./FormB.html)

});

如果您不能修改<代码>窗体< /代码>,请看我的答案并考虑使用类似的策略。