Вы можете использовать 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/
Большое спасибо за вашу помощь =). – Vileps
Почему бы просто не использовать привязку 'value'? Я что-то упустил? –
Я предполагаю, что я думал, что он специально хотел «selectedIndex» этого элемента. Повторно прочитав вопрос, возможно, это не обязательно так. Будет обновлен ответ. –