2016-05-03 12 views
0

So verwende ich knockout und versuche, die ID des ausgewählten Artikels in meinem Javascript auf dem Change-Event zu bekommen. Hier ist mein htmlSo erhalten Sie ausgewählten Wert von Dropdown-Liste mit Knockout

<div id="platforms" data-bind="with: platformsViewModel"> 
      <p> 
       Selected Platform: 
       <select data-bind="options: platforms, optionsText: 'displayName', value: 'id', optionsCaption: 'Choose...', event: { change: loadMedias }" ></select> 
      </p> 
     </div> 

meiner Ansicht nach Modell ist wie folgt

my.viewModels.PlatformsViewModel = function() { 
    var self = this; 

    self.platforms = ko.observableArray(); 
    self.message = ko.observable(); 

    self.loadMedias = function (data, event) { 
     my.loadMedias(data.id); 
    } 
} 

was ich hier fehlt?

Antwort

4

Es sieht wie dies kann eine einfache Lösung sein, wo Sie möglicherweise die value Bindung mit dem Sie sollten die optionsValue verbindlich werden:

<select data-bind="options: platforms, optionsText: 'displayName', optionsValue: 'id', optionsCaption: 'Choose...', event: { change: loadMedias }" ></select> 
                   <!--^here --> 

Doch warum nicht die setzen Logik in der Ansicht Modell, anstatt aus Ihrer Sicht:

my.viewModels.PlatformsViewModel = function() { 
    var self = this; 

    self.platforms = ko.observableArray(); 
    self.message = ko.observable(); 

    //new observable to hold selected platform 
    self.selectedPlatform = ko.observable(); 
    //subscribe to changes in the observable value to trigger the loading 
    self.selectedPlatform.subscribe(function(newValue) { 
     my.loadMedias(newValue.id); 
    }); 
} 

und eine aktualisierte <select> tha t die tatsächliche Plattform Objekt ausgewählt binden, anstatt nur die ID:

<select data-bind="options: platforms, optionsText: 'displayName', value: selectedPlatform, optionsCaption: 'Choose...'" ></select> 
+0

in der View-Modell ein großer Vorschlag ist, und klappt wunderbar! Ich danke dir sehr. –

-1

Html:

<select name="ddlUsers" id="ddlUsers" class="form-control" 
          data-bind="options: ViewModel.CashierPage.AvailableCash, optionsText: 'OptionTextInfo', value: ViewModel.CashierPage.CashSelected, optionsCaption: 'Cassa...'"></select> 

in js:

public CashSelected: KnockoutObservable(); 
... 
self.CashSelected = ko.observable(null); 
self.CashSelected.subscribe(function(valueNewValue){/*your code*/});