2

を使用して入力された dijit/Form/FilteringSelect コントロールのオプション項目を無効にしようとしていstoreます。

このガイドに従う: http://dojotoolkit.org/documentation/tutorials/1.9/selects_using_stores/

Select コントロールがストアを使用せずに作成された場合にのみ可能のようです。これは、FilteringSelect の例のデバッグから推測しました。アイテムを無効にするために、次の 2 つの方法を試しました。

  1. このスレッドのアドバイスに従ってください: dijit.form.Select で単一のオプションを無効にする方法は? . ただし、FilteringSelect の例の「stateStore」ストア オブジェクトには「options」プロパティがありません。

  2. ストア オブジェクト内の適切な要素にアクセスしようとしています。たとえば、FilteringSelect の例では、次のようにします。

    var optionItem = stateStore.get("AZ");
    optionItem.disabled = true;
    stateStore.put(optionItem);
    select.startup();
    

どちらの方法も機能しないようです。したがって、Dijit Select コントロールでアイテムを無効にする唯一の方法は、options代わりにプロパティを使用することです。解決策を事前にありがとう!

4

2 に答える 2

2

ストア内のデータ (実際にはビジネス データ) とレンダリングされたデータ (ビュー ロジックを含む) には違いがあります。ストアを使用する場合、実際にはレンダリングされたデータをストアにフィードしています。

レンダリングされたデータ (= 選択したオプション) を変更するには、 API ドキュメントで読むことができるように、のgetOptions(idx)メソッドを使用する必要があります。オプションの状態を変更するには、次を使用できます。dijit/form/Selectdisabled

registry.byId("mySelect").getOptions(myId).disabled = true;

それだけです。ストア データはビュー データではなくビジネス データを表しているため、変更しても役に立ちません。また、2 番目のオプションが無効になっているJSFiddleの例も作成しました。

于 2013-09-11T09:51:27.377 に答える