0

テンプレートを作成したところ<select dojotype="dijit.form.ComboBox" dojoAttachPoint="selectPageNumber" id="selectPageNumber">、id と dojoAttachPoint が「selectPageNumber」のタグがあります。作成時にオプションを入力したいので、postCreate 関数にいくつかのコードを追加します。

var select = dijit.byId("selectPageNumber");

また

var select = this.selectPageNumber;

しかし、私は常にselect未定義です。
私は何を間違っていますか?

UPD: 要素の問題は自然に解決されましたが、解決策がありませんでした。どちらdojo.addOnLoadも使用しませんでしwidgetsInTemplate : trueたが、機能し始めました。しかし、同じ問題が再び見つかりました。別のタグを追加すると、それを取得できません!
HTML:

<select class="ctrl2" dojotype="dijit.form.ComboBox" dojoAttachPoint="selectPageNumber" id="selectPageNumber">
</select>
<select class="ctrl2" dojotype="dijit.form.ComboBox" dojoAttachPoint="selectPageNumber2" id="selectPageNumber2">
</select>

ウィジェット:

alert(this.selectPageNumber);
alert(this.selectPageNumber2);

最初のアラートは、それthis.selectPageNumberが有効なオブジェクトであり、this.selectPageNumber2が null であることを示しています。
widgetsInTemplatefalse に設定されています。
すべてのコードがdojo.addOnLoad()
dojo.require()有効です
。IBM Rational Application Developer を使用しています (必要な場合)。

なぜそんなに違うのですか?

4

3 に答える 3

2

構文に基づいて、1.6 を使用していると想定しています。あなたの質問はテンプレートとpostCreateに言及しているので、コンポジット(テンプレートのウィジェット)として機能するウィジェットを作成したと仮定しています。

1.6 を想定して、ウィジェットでwidgetsInTemplateプロパティを true に設定しました。これにより、ウィジェットの作成時に解析する必要があるウィジェットがテンプレートに含まれていることがパーサーに通知されます。

http://dojotoolkit.org/documentation/tutorials/1.6/templated/

選択からIDを削除します。ID を持つということは、ウィジェットをページごとに 1 回だけインスタンス化できることを意味します。this.selectPageNumber選択ウィジェットにアクセスするには、ウィジェット内で使用する必要があります。

1.7 以降を使用している場合は、widgetswidgetsInTemplateプロパティを設定する代わりに、 dijit._WidgetsInTemplateMixinmixin を使用する必要があります。

http://dojotoolkit.org/reference-guide/1.8/dijit/_WidgetsInTemplateMixin.html

于 2013-03-06T16:27:10.190 に答える
1

dijit.byId() が呼び出されるタイミングによっては、ウィジェットがまだ作成されていない場合があります。dojo.addOnLoad() を使用してみてください

 dojo.addOnLoad(function() {
     var select = dijit.byId("selectPageNumber");
 });
于 2013-03-06T15:52:40.380 に答える
0

私は解決策に近づきました.htmlコードで行われた変更に応答しないRADの「キャッシング」のようなものがあるようです。
RAD (Eclipse ベース) を使用してワークスペース環境をパージする方法が解決策になる可能性があります。

于 2013-03-15T11:37:01.050 に答える