2013-04-15 1 views
3

Я попытался удалить все параметры из dijit.form.filteringselect и добавить параметр dijit.form.filteringselect, используя следующую функцию. Однако, я получаю сообщение об ошибке: no method getOptions и addOption. Я использую додзё 1.7Как удалить все опции из виджета Dijit FilteringSelect?

function showTablesDropDown(tableDiv){ 
    dijit.byId(tableDiv).removeOption(dijit.byId(tableDiv).getOptions()); 
    dijit.byId(tableDiv).addOption(dojo.create("option", {label:"None", value:"None"})); 
} 

Как удалить все параметры из dijit.form.filteringselect и добавить возможность dijit.form.filteringselect?

+0

Почему вы должны 'dijit.byId (tableDiv)'? – g00glen00b

+0

dijit.byId (tableDiv) - это идентификатор фильтра выбор – Rachel

+0

есть ли какое-либо решение? @DimitriM – Rachel

ответ

4

Проблема заключается в небольшом непонимании того, как FilteringSelect (и все, что наследуется от _AutoCompleterMixin) взаимодействует со своими данными. Независимо от того, как вы создаете виджет FilteringSelect, основным механизмом для управления его параметрами является объект, который придерживается Dojo Store API.

Это означает, что для того, чтобы изменить параметры виджетов FilteringSelect, вместо этого вам необходимо взаимодействовать с этим store. Я set up this fiddle, чтобы продемонстрировать, но в основном вы хотите изменить свою функцию, чтобы что-то вроде:

function showTablesDropDown(tableDiv){ 
    var filteringSelectWidget = dijit.byId(tableDiv); 

    // Clear current value since options are changing. 
    filteringSelectWidget.set("value", ""); 

    var store = filteringSelectWidget.get("store"); 
    var newData = [{label: "None", value: "None"}];  

    // Give the underlying store a new data array. 
    store.setData(newData); 
} 
+0

Я не хочу добавлять {label: "None", значение: "None"} для сохранения. поэтому я попробовал это. dijit.byId (tableDiv) .set ("value", {label: "None", value: "None"}); но его не работает – Rachel

+0

Я думаю, что ваш пример заключается в замене магазина и добавлении newData для хранения. Я не хочу заменять хранилище, просто хотел добавить новую опцию в dijit.byId (tableDiv), чтобы не хранить – Rachel

+0

Ну, ваш виджет 'FilteringSelect' использует хранилище для хранения всех ваших опций. Поэтому вы не просто добавляете элемент непосредственно в 'FilteringSelect', а добавляете элемент в хранилище' FilteringSelect'. Итак, вы хотите просто добавить новый элемент в магазин (и сохранить все оригинальные элементы)? Или вы просто пытаетесь установить значение 'FilteringSelect' для того, что еще не существует в качестве опции? – Default