2016-03-10 2 views
-2

У меня есть Knockout bound Combobox.Нокаут - выберите первый элемент в combobox programatically

<input title="Country" class="CountryID ComboBox" id="CountryID_GUIDGUIDGUID" type="text" data-bind="SCombo: { Value: CountryID, ValueMember: 'CountryID', Display: 'Country', Caption: 'Country*', Source: MyCountryList}"> 

Я не могу узнать, как программно установить значение (из консоли).

Нормальный jQuery $("#target").val($("#target option:first").val()); не работает.

Кто-то предложил

ko.dataFor("CountryID_GUIDGUIDGUID").DropDownProperty("Albania"); 

, но я не могу получить, чтобы работать - Unable to get property 'DropDownProperty' of undefined or null reference

+0

Woa есть. Это не combobox, это 'type =" text ". На нем есть специальный обработчик привязки, который предлагает какой-то плагин, но вся информация вокруг него (включая код обработчика привязки) отсутствует в вашем вопросе. Пожалуйста, убедитесь, что ваш вопрос содержит [mcve]. – Jeroen

+0

Вы должны использовать свое фактическое имя свойства вместо «DropDownProperty». Так что в вашем случае 'CountryID' e.eg' ko.dataFor («CountryID_GUIDGUIDGUID»). CountryID («Албания»); «однако, поскольку у вас есть« CountryID »в качестве ценной бумаги, вам нужно использовать идентификатор Албании, а не страны name – nemesv

+1

Также, в общем, с Knockout вы должны * никогда * не менять DOM, если можете вам помочь. Измените модель представления, пусть KO обрабатывает обновления DOM. – Jeroen

ответ

1

В Knockout, вы должны думать в терминах значений параметров в модели, а не манипулируя DOM элементов. Предполагая, что свойство Value для пользовательского связывания работает как стандартное связывание value, вам просто нужно установить значение CountryID в нужное значение. Это будет что-то вроде

vm.CountryID(vm.MyCountryList()[0]); 

в зависимости от контекста и является ли MyCountryList является observableArray и какова его структура.

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