Jak uzyskać wybraną opcję menu z knockout.js observableArray?
Czuję, że brakuje mi czegoś bardzo podstawowego, ale nie mogę uruchomić rozwijanego menu tak, jak tego oczekuję, używając Knockout.js.
Mam zestaw obiektów, które chcę zaprezentować w menu i muszę znaleźć wybraną opcję i opublikować ją na serwerze. Mogę wyrenderować menu, ale nie mogę uzyskać wartości wybranego elementu. Mój model widoku wygląda tak:
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() );
a mój widok wygląda tak:
<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>
Jak wyświetlić wybrany element menu w obszarze i opublikować na serwerze? (Zakładam, że obserwowalne, które renderuję w zakresie, jest tym samym, co post.) Czy potrzebuję innej własności wProjectFilterItem
, lubićthis.selected = ko.observable(false);
? Jeśli tak, w jaki sposób deklarowałbym to jako cel wartości?