Widget Dojo小部件和装饰器模式?
有人能帮我在Dijit小部件上应用decorator模式吗 例如,给定一个Widget Dojo小部件和装饰器模式?,widget,dojo,Widget,Dojo,有人能帮我在Dijit小部件上应用decorator模式吗 例如,给定一个FormA_小部件,它显示一个带有一些输入文本和按钮的表单。 我们的想法是创建一个FormB_小部件,它“扩展”了FormA_小部件,用更多的单选按钮、输入等来装饰它 我知道如何创建模板化的自定义小部件,以及如何“扩展”小部件,我需要知道如何在FormA\u小部件中的某个位置“注入”FormB\u小部件的模板,以添加所需的“装饰2” 提前感谢。查看我创建的示例: 这是最简单的解决方案,但它需要对格式进行一些微小的更改: v
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)
});
如果您不能修改<代码>窗体< /代码>,请看我的答案并考虑使用类似的策略。