2017-04-01 2 views
4

Ich habe ein Problem, wie nennen onchanges js meiner wählen Sie die Option zu klopfen habe ich bereits eine Funktion und html, aber wenn ich die wählen Sie die Option wählen, ändert sich nichtsauf Change-Ereignis in ausgewählten mit Knockout

<select data-bind="event:{change:setSelectedStation() }, 
        options: seedData, 
        optionsText: 'text', 
        optionsValue: 'value'"> 
</select> 

Hier ist meine Funktion

Antwort

7

Verwenden Sie die Zwei-Wege-Datenbindungen von Knockout, anstatt UI-Ereignisse manuell zu abonnieren.

Knockouts value Datenbindung überwacht UI-Änderungen und verfolgt automatisch den neuesten Wert für Sie.

Anstatt HTML über jQuery-Methoden zu ersetzen, verwenden Sie text, attr und andere value Bindungen, um die Benutzeroberfläche zu aktualisieren, wenn sich Ihre Auswahl ändert.

Wenn Sie beim Ändern einer Auswahl zusätzliche Arbeiten ausführen möchten (z. B. Schließen eines Popups), geben Sie subscribe auf den ausgewählten Wert ein.

var VM = function() { 
 
    this.seedData = [ 
 
    { 
 
     text: "Item 1", 
 
     data: "Some other stuff" 
 
    }, 
 
    { 
 
     text: "Item 2", 
 
     data: "Something else" 
 
    }, 
 
    { 
 
     text: "Item 3", 
 
     data: "Another thing" 
 
    } 
 
    ]; 
 
    
 
    this.selectedItem = ko.observable(); 
 
    
 
    this.selectedItem.subscribe(function(latest) { 
 
    console.log("Input changed"); 
 
    }, this); 
 
}; 
 

 
ko.applyBindings(new VM());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script> 
 

 
<select data-bind=" 
 
     value: selectedItem, 
 
     options: seedData, 
 
     optionsText: 'text'"> 
 
</select> 
 

 
<!-- ko with: selectedItem --> 
 
<p> 
 
    Your selection: <span data-bind="text: data"></span> 
 
</p> 
 
<!-- /ko -->

+0

wir können nicht nur durch eine Funktion aufrufen? –

+0

Sie * können *, bisschen sollten Sie nicht ... Wenn Sie Knockout als Rahmen verwenden möchten, ist es am besten, "den Knock-Out-Weg" zu stopfen. Wenn Sie Ihre eigenen Ereignisbehandlungen verwalten und Benutzeroberflächenelemente einzeln aktualisieren möchten, ist es besser, jQuery zu verwenden und die Knockout-Funktion ganz zu überspringen. – user3297291

+0

Aber wenn ich den Wert des Parameters in selectedItem eingeben möchte, was soll ich hineinlegen? –