0

私はdojo1.6を使用していますが、発生した問題は非常に独特です。次のコードを確認してください。

var dd = new dijit.form.Select({
        id: 'dd', 
        options: [{label:'option1'}, {label: 'option2'}],
    }); 
dojo.connect(dd, "onChange", this, function (){
        console.debug("trying to catch the change");
    });

したがって、上記のコードに従って、ドロップダウンを取得し、ドロップの値を変更して、のイベントをキャッチできるようにする必要がありますdojo.connect。デフォルトで選択されているドロップダウンが表示されますがoption1、を選択できませんoption2。ドロップダウンに両方のオプションが表示されますが、選択が機能しないことに注意してください。私は道場ではかなり新しいですが、すべての例から、これはドロップダウンを作成するための最小要件のようです。フィードバックをいただければ幸いです。編集:それで、私がそのようなオプションを設定した場合[{label: 'option1', value: 1}, {label: 'option2', value:2}]、すべてが私が望むように機能することがわかります。しかし、誰かがここでの値の役割とは何か、そしてなぜそれが常に整数でなければならないのかを説明できますか?

4

1 に答える 1

0

値は、選択を含むフォームを送信した場合にサーバーに送信されるテキストです。

optionこれは、value属性を持つタグに似ています<option value="op1">option1</option>。タグのvalue属性を省略すると、送信されるテキストは単にラベルテキスト「option1」になります。

値は整数である必要はありません{label: foo, value: foo}。fooがオプションの中で一意である限り、オプションを使用できます。ここでvalueプロパティを省略すると、送信された値は未定義になり、dijitは(お気づきのとおり)一般的に奇妙な動作をします。

少し実験してから編集してください。Selectdijitを使用する場合、options配列の値(または実際にはストアのID)は文字列である必要があります。そうしないと、selectにデフォルト値を指定しても機能しません。例えば:

new Select({
    value: 3,
    options: [ {label: "foo", value: 1}, {label: "bar", value: 3}]
})

..デフォルトの選択オプションとして「バー」を設定せ、ドロップダウンで選択したアイテムを強調表示しても機能しません。文字列値を持つオプション配列を使用する必要があります。

    options: [ {label: "foo", value: "1"}, {label: "bar", value: "3"}]

この背後にある理由について100%確信が持てません。

于 2012-12-12T18:25:37.307 に答える