2013-02-13 104 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