0

Dijitウィジェットにデコレータパターンを適用するのを手伝ってくれる人はいますか?

たとえば、FormA_Widgetいくつかの入力テキストとボタンを含むフォームを示す a が与えられたとします。アイデアは、ラジオボタン、入力などで装飾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)

});

変更できない場合は、確認ボタン付きの Dojo ダイアログFormAに対する私の回答を見て、ここで同様の戦略を採用することを検討してください。

于 2013-02-15T12:13:49.650 に答える