0

テンプレート化されたウィジェットを作成しましたが、テンプレートには、実行時に同じ値で更新したい場所が 2 つあります。次のようなもの:

<div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'">
  Site: <span data-dojo-attach-point="siteNameNode">Placeholder</span>
</div>

...

<div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'bottom'">
  Site: <span data-dojo-attach-point="siteNameNode">Placeholder</span>
</div>

私のJavascriptには次のものがあります:

_setSiteNameAttr: { node: "siteNameNode", type: "innerHTML" },
...
this.set("siteName", "Your Site Name");

コードが実行されると、2 番目の siteNameNode のみが更新されます。これは、アタッチ ポイントがテンプレート内で一意でなければならないということですか、それとも重複を処理する別の方法がありますか? 重複が許可されていない場合、複数の値を一度に更新する一般的な方法はありますか? または、ノードに異なるアタッチ ポイント名を付ける必要がありますか?

ありがとう。Dojo 1.8.3 を使用しています。

4

1 に答える 1

3

アタッチ ポイントは、DOM ノードへの参照です。2 つの DOM ノードを同じアタッチ ポイントに接続しようとしても、2 つの異なる DOM ノードがあるためうまくいかないと思います (そのため、最後の 1 つだけがアタッチ ポイントとして保存されています)。

しかし、以下の例のように、ノードのコンテンツを同じ値に設定してみませんか? 2 番目のアタッチ ポイントの名前を に変更するだけでsiteNameNode2準備完了です。

html.set(this.siteNameNode, "Your Site Name");
html.set(this.siteNameNode2, "Your Site Name");

モジュールを使用して、dojo/html両方の DOM ノードの内部 HTML を同じコンテンツに設定していますが、次のようなこともできます。

this.siteNameNode.innerHTML = "Your Site Name";

アタッチ ポイントの DOM ノードは、同じ名前のプロパティとしてウィジェットに保存されるため、簡単にアクセス/変更できます。

于 2013-03-19T08:06:09.587 に答える