2016-05-03 45 views
0

因此,我正在使用淘汰赛并尝试在change事件中获取javascript中的选定项ID。这里是我的html如何使用淘汰赛从下拉列表中获取选定的值

<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> 

我的看法模型如下

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

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

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

我失去的是什么?

回答

4

看起来像这可能是一个简单的修复,在那里你可能使用value结合,你应该使用optionsValue绑定:

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

但是,为什么不把逻辑视图模型,而不是你的观点:

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); 
    }); 
} 

和更新<select>塔吨将结合实际平台对象中选择,而不是仅仅其ID:

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

是一个伟大的建议,并奇迹般有效!非常感谢。 –

-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> 

在JS:

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