Dojo小部件和装饰模式?
问题描述:
任何人都可以帮助我在Dijit小部件上应用装饰器模式?Dojo小部件和装饰模式?
例如,给定一个FormA_Widget
,它显示一个带有一些输入文本和按钮的窗体。 的想法是创建一个FormB_Widget
,其中“扩展”的FormA_Widget
多用一些单选按钮,输入装饰它,等
我知道如何创建一个模板自定义部件,以及如何“扩展”的窗口小部件,我需要的是知道如何在FormA_widget
内“注入”的FormB_Widget
模板在一些地方加入所需的“decoration2提前
感谢
答
退房我创建的例子:。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 with confirmation button并考虑在这里采用类似的策略。
感谢您花时间构建示例代码。 – EricSonaron 2013-02-17 20:48:40