2013-09-11 2 views
2

Я пытаюсь отключить элементы опций в элементе dijit/Form/FilteringSelect, который заполняется с помощью store.Dojo 1.9: Dijit: Отключение элементов опций в dijit/Form/FilteringВыберите, что было заполнено с помощью магазина

После этого руководства: http://dojotoolkit.org/documentation/tutorials/1.9/selects_using_stores/

Это представляется возможным, только если Select управление было создано без использования магазина. Я вывел это из отладки примера FilteringSelect. Я попробовал два способа отключить элемент:

  1. Следуя советам в этой теме: How to disable a single option in a dijit.form.Select?. Однако объект хранилища stateStore в примере FilteringSelect не имеет свойства «options».

  2. Попытка доступа к соответствующему элементу в объекте магазина. Например, в примере FilteringSelect, я делаю следующее:

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

Ни один метод, кажется, работает, так что кажется, что единственный способ иметь отключенными в Dijit Выбор управления является использование options собственности вместо. Заранее благодарен за решение!

ответ

2

Существует разница между данными в вашем магазине (которые фактически являются бизнес-данными) и ваши визуализированные данные (содержащие логику просмотра). Если вы используете магазин, вы фактически подаете свои данные в свой магазин.

Чтобы изменить визуализированный данные (= параметры в вашем выборе), вам нужно использовать getOptions(idx) метод dijit/form/Select, как вы можете прочитать в API documentation. Для того, чтобы изменить disabled состояние опции вы можете использовать:

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

Это все, что вам нужно. Изменение данных хранилища не поможет, поскольку оно представляет собой бизнес-данные, а не просмотр данных. Я также привел пример JSFiddle, где второй вариант отключен.

+0

Большое спасибо, я не понимал, что решение будет таким простым! – MaXim

Смежные вопросы