2013-04-21 3 views
3

Я хочу получить идентификатор выбранного индекса в своем поле со списком в нокауте, возможно ли это?Получить идентификатор выбранного значения в поле со списком с нокаутом

<select id="lstEntreprisesCbx" data-bind="options:Entreprises, 
         optionsText: 'NomEntreprise', 
         optionsCaption: '-- Nouvelle Entreprise --'"> 
</select> 

Благодаря

ответ

3

Вы можете использовать selectedIndex свойство выбора элемента, чтобы выяснить, выбранный вариант.

Если вы хотите, чтобы поместить это в связывающем обработчика, вы могли бы что-то вроде:

ko.bindingHandlers.selectedIndex = { 
    init: function(element, valueAccessor) { 
     ko.utils.registerEventHandler(element, "change", function() { 
      var value = valueAccessor(); 
      if (ko.isWriteableObservable(value)) { 
       value(element.selectedIndex); 
      } 
     }); 
    } 
}; 

Это предполагает, что вы связывая его с наблюдаемой (если вы хотите связать с не-наблюдаемы, то она занимает немного больше кода), и вы бы использовать его как:

<select id="lstEntreprisesCbx" data-bind="options:Entreprises, 
         optionsText: 'NomEntreprise', 
         optionsCaption: '-- Nouvelle Entreprise --', 
         selectedIndex: myIndex"> 
</select> 

Вот пример: http://jsfiddle.net/rniemeyer/K6SZQ/

обновление

Я прочитал вопрос как конкретно желающий selectedIndex выбранного в настоящее время значения, которое, возможно, было неправильным. Если вы действительно хотите получить что-то вроде id выбранного объекта, то вы можете использовать привязку value вместе с опцией optionsValue. Это будет выглядеть так:

Таким образом, необходимо указать, какое значение для обновления в value связывания и который свойство использовать (в виде строки) в optionsValue связывания. Если вы опустите optionsValue, тогда он заполнит ваш value всем объектом. Это также то, что вы использовали бы, если бы ваш массив параметров был всего лишь примитивными значениями.

Пример: http://jsfiddle.net/rniemeyer/3LyLs/

+0

Большое спасибо за вашу помощь =). – Vileps

+0

Почему бы просто не использовать привязку 'value'? Я что-то упустил? –

+0

Я предполагаю, что я думал, что он специально хотел «selectedIndex» этого элемента. Повторно прочитав вопрос, возможно, это не обязательно так. Будет обновлен ответ. –

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