Czuję, że brakuje mi czegoś bardzo prostego, ale nie mogę dostać menu rozwijanego do pracy, ponieważ oczekuję użycia Knockout.js.Jak uzyskać wybraną opcję menu z pliku knockout.js observableArray?
Mam zestaw obiektów, które chcę przedstawić w menu i muszę znaleźć wybraną opcję i opublikować ją na serwerze. Mogę wyświetlić menu do renderowania, ale nie mogę uzyskać wartości wybranego elementu. Moim zdaniem modelka wygląda następująco:
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());
i moim zdaniem znaczników wygląda następująco:
<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 dostać wybrana pozycja menu wyświetlanych w rozpiętości, i odpowiedzieć na serwerze? (Zakładam, że obserwowalne renderowanie w tym zakresie jest tym samym, które opublikowałem.) Czy potrzebuję innej właściwości w ProjectFilterItem
, np. this.selected = ko.observable(false);
? Jeśli tak, jak zgłosiłbym to jako cel wartości?
d'oh! Tęskniłem za tym w dokumencie - koncentrowałem się na sekcji parametrów na dole i czytałem dokładnie obok notatki na górze. Dzięki, problem rozwiązany! – Val
Dzięki za demo, bardzo mi to pomogło! – WhatsInAName