Как получить выбранный пункт меню из массива knockout.js observableArray?
Я чувствую, что мне не хватает чего-то очень простого, но я не могу заставить работать выпадающее меню, как я ожидаю, используя Knockout.js.
У меня есть набор объектов, которые я хочу представить в меню, и мне нужно найти выбранную опцию и отправить ее на сервер. Я могу получить меню для рендеринга, но не могу получить значение выбранного элемента. Моя модель зрения выглядит так:
function ProjectFilterItem( name, id ) {
this.Name = name;
this.Id = id;
}
function FilterViewModel() {
this.projectFilters = ko.observableArray([
new ProjectFilterItem( "foo", "1" ),
new ProjectFilterItem( "bar", "2" ),
new ProjectFilterItem( "baz", "3" )
]);
this.selectedProject = ko.observable();
}
ko.applyBindings( new FilterViewModel() );
и моя разметка вида выглядит так:
<select
id = "projectMenu"
name = "projectMenu"
data-bind = "
options: projectFilters,
optionsText: 'Name', /* I have to enquote the value or I get a JS error */
optionsValue: 'Id', /* If I put 'selectedProject here, nothing is echoed in the span below */
optionsCaption: '-- Select Project --'
"
></select>
<b>Selected Project:</b> <span data-bind="text: selectedProject"></span>
Как заставить выбранный пункт меню отображаться в промежутке и публиковать на сервере? (Я предполагаю, что наблюдаемая мною визуализация в промежутке будет той же, что и я.) Нужно ли мне другое свойство вProjectFilterItem
, любитьthis.selected = ko.observable(false);
? Если так, то как бы я объявил это как цель значения?