2013-02-13 56 views
0

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

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

我知道如何创建一个模板自定义部件,以及如何“扩展”的窗口小部件,我需要的是知道如何在FormA_widget内“注入”的FormB_Widget模板在一些地方加入所需的“decoration2提前

感谢

回答

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 with confirmation button并考虑在这里采用类似的策略。

+0

感谢您花时间构建示例代码。 – EricSonaron 2013-02-17 20:48:40