Ich habe das Gefühl, dass ich etwas sehr Grundlegendes verpasse, aber ich kann kein Dropdown-Menü finden, um zu funktionieren, wie ich Knockout.js benutze.Wie man ausgewählte Menüoption von einem knockout.js observableArray erhält?
Ich habe eine Reihe von Objekten, die ich in einem Menü anzeigen möchte, und ich muss die ausgewählte Option finden und diese an den Server senden. Ich kann das Menü zum Rendern bringen, aber es scheint nicht möglich zu sein, den Wert des ausgewählten Elements zu erhalten. Meine Ansicht Modell sieht wie folgt aus:
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());
und meiner Meinung nach Markup sieht wie folgt aus:
<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>
Wie bekommt der ausgewählte Menüpunkt in der Spanne angezeigt werden, und an den Server zu schreiben? (Ich nehme an, dass das Observable, das ich in der Spanne rende, dasselbe ist, das ich posten würde.) Brauche ich eine andere Eigenschaft in der ProjectFilterItem
, wie this.selected = ko.observable(false);
? Wenn ja, wie würde ich es als das Ziel des Wertes erklären?
d'oh! Das habe ich im Doc verpasst - ich konzentrierte mich auf den Bereich mit den Parametern am unteren Rand und las direkt nach der Notiz oben. Danke, Problem gelöst! – Val
Danke für die Demo, es hat mir sehr geholfen! – WhatsInAName