2

ウィジェットが埋め込まれた Dojo UI ウィジェットがあります。この埋め込みウィジェットにオブジェクトを渡して正しくセットアップする必要がありますが、その方法がわかりません。

ラッパーウィジェットのテンプレートに埋め込まれたウィジェットでテンプレートを作成しています。たとえば、次のようになります。

...<div class="thing"
        data-dojo-type="mycompany.widgets.ComplexEmbeddedWidget"
        data-dojo-props="stuff: '${stuff}'"></div>...

しかし、これはうまくいかないようです。おそらく、データは文字列として渡されると思いますか?

このデータを組み込みウィジェットのプロパティに設定し、関数で参照することで、このデータを引き出していpostMixInPropertiesます。

間違いなくこれは間違ったアプローチですが、このような埋め込みウィジェットを設定するにはどうすればよいですか?

4

3 に答える 3

1

mycompany.widgets.ComplexEmbeddedWidget(コンストラクターで) 初期化されたオブジェクトの「もの」をすでに設定しておきたい場合は、このアプローチがうまくいくかどうかわかりませんが、簡単な修正で ${stuff} の周りの ' 引用符を削除できますか?

基本的には、dijit/_TemplatedMixin を使用してウィジェットを派生させます。これは、buildRendering 中に、'this' (ウィジェット) で _stringRepl を呼び出します。WidgetsInTemplate を使用しているため、フローについて完全には確信が持てません。

例として、マークアップを介してウィジェット属性を配列に設定します。

<div 
   data-dojo-type="dijit.form.Select" 
   data-dojo-props="options:[ 'val1', 'val2']">
</div>

ご覧のとおり、値を引用符で囲んでいません。そうしないと、文字列としてレンダリングされます。次に、ComplexEmbedded テンプレートを次のように変更します。

dojo.declare("exampleName", [_WidgetsInTemplateMixin, _TemplatedMixin], {
 templateString: '<div class="outerWidgetDomNode">
  ...
  <div class="thing"
    data-dojo-type="mycompany.widgets.ComplexEmbeddedWidget"
    data-dojo-props="stuff: ${stuff}"></div>
  ...
'
});

ComplexEmbeddedWidget.stuff をオブジェクトでインスタンス化するには、これを文字列にする必要があります。_Templated は dojo.string.substitute を使用しますが、深くネストされたオブジェクトを指定するとおそらく失敗します。

マークアップの例:

<div data-dojo-type="exampleName" data-dojo-props="stuff: '{ json:\'Representation\', as:\'String\'}'"></div>

またはプログラマティック経由

var myObj = { obj:'Representation', as:'Object' };
var anExampleName = new exampleName({
    stuff: dojo.toJson(myObj) // stringify here
}, 'exampleNode');

しばらくの間、ウィジェットをテンプレートのものに埋め込むことで、フローの存在を調べたいと思っていました:)

于 2012-07-21T14:32:14.080 に答える
1

このアプローチを使用する場合は、テンプレート化された埋め込みウィジェットに渡される前に、javascript オブジェクト json を変換する必要があると思います。

「dojo/json」を要求して実行することで、これを簡単に行うことができます

this.stuff=jsonModule.stringify(this.stuffAsObject);

すでに発見したように、より複雑なプロパティを設定する場合は、おそらくプログラムによるインスタンス化が最適です。

于 2012-07-12T17:23:18.627 に答える
0

プログラムでウィジェットを挿入できます。これは、挿入されたウィジェットにJavaScriptオブジェクトを渡す必要がある場合の方法のようです。

于 2012-07-12T16:56:44.170 に答える