Wie erhalte ich eine ausgewählte Menüoption aus einem knockout.js observableArray?

Ich habe das Gefühl, dass mir etwas sehr Grundlegendes fehlt, aber ich kann kein Dropdown-Menü zum Funktionieren bringen, wie ich es von Knockout.js erwarte.

Ich habe eine Reihe von Objekten, die ich in einem Menü präsentieren möchte, und ich muss die ausgewählte Option finden und diese auf dem Server veröffentlichen. Ich kann das Menü zum Rendern aufrufen, aber anscheinend nicht den Wert des ausgewählten Elements ermitteln. Mein Ansichtsmodell sieht so 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 mein View Markup sieht so 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 wird das ausgewählte Menüelement im Bereich angezeigt und auf dem Server bereitgestellt? (Ich gehe davon aus, dass das beobachtbare Objekt, das ich in der Spanne wiedergebe, dasselbe ist, das ich veröffentlicht habe.) Brauche ich eine andere Eigenschaft in derProjectFilterItem, mögenthis.selected = ko.observable(false); ? Wenn ja, wie würde ich es als Ziel des Werts deklarieren?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage