选择中的淘汰赛访问值

时间:2018-07-24 23:03:27

标签: knockout.js knockout-mapping-plugin knockout-3.0

如何获取选择的选择值?

HTML:

<select data-bind="options: customers, optionsText: 'customer_display_name', optionsValue: 'customer_id'"></select>

Javascript:

var customers = <?php echo json_encode($this->customers); ?>;
self.customers = ko.mapping.fromJS(customers);

如何在ViewModel中访问当前选择的“ optionsText”或“ optionsValue”?

self.customers...?

1 个答案:

答案 0 :(得分:0)

您可以这样做:

function ViewModel() {
  this.selectedCustomer = ko.observable();
  this.customers = [{
    customer_display_name: "Bob",
    customer_id: 10 
  }, {
    customer_display_name: "Joseph",
    customer_id: 20 
  },{
    customer_display_name: "Charlie",
    customer_id: 30 
  }];
  
  // Only for debug purposes
  this.selectedCustomer.subscribe(function (newValue) {
    console.info(newValue);
  }, this);
}
ko.applyBindings(new ViewModel());  
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<select data-bind="options: customers, optionsText: 'customer_display_name', optionsValue: 'customer_id', value: selectedCustomer"></select>

一个可观察的selectedCustomer拥有当前所选客户的'customer_id'属性值。如果希望selectedCustomer保留当前所选客户的整个对象,只需从HTML代码中删除属性“ optionsValue:'customer_id'”。