0

任何人都可以帮助我在 Dijit 小部件上应用装饰器模式吗?

例如,给定一个FormA_Widget显示带有一些输入文本和按钮的表单。这个想法是创建一个,它用更多的单选按钮、输入等FormB_Widget“扩展”装饰它。FormA_Widget

我知道如何创建一个模板化的自定义小部件,以及如何“扩展”一个小部件,我需要知道如何在其中的FormB_Widget某个位置“注入”模板FormA_widget以添加所需的“decoration2.

提前致谢。

4

1 回答 1

1

查看我创建的示例:http ://plnkr.co/edit/dGMJ8UBQ9dT3dGQPQSeu?p=preview

这是最简单的解决方案,但它需要在以下方面进行一些微小的更改FormA

FormA.js

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

    templateExtensionString: "" // <= add `templateExtensionString` property
});

FormA.html - 在小部件模板中添加templateExtensionString占位符:

<div>
    <div><!-- FormA markup --></div>

    <div>${!templateExtensionString}</div>

    <div><!-- FormA markup --></div>
</div>

注意:为防止_TemplatedMixin在字符串中转义引号,请放置“!” 在完整的变量名之前。

现在您可以扩展FormA

var FormB = declare([FormA], {

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

});

如果您无法修改FormA,请查看我对带有确认按钮的 Dojo Dialog 的回答,并考虑在此处采用类似的策略。

于 2013-02-15T12:13:49.650 回答