Чувствам, че ми липсва нещо много основно, но не мога да накарам падащото меню да работи, както очаквам, използвайки 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>
Как да накарам избрания елемент от менюто да се покаже в диапазона и да се публикува на сървъра? (Предполагам, че наблюдаемото, което изобразявам в span, е същото, което бих публикувал.) Имам ли нужда от друго свойство в ProjectFilterItem
, като this.selected = ko.observable(false);
? Ако е така, как бих го декларирал като цел на стойността?