如何在knockoutjs中使用对象设置选项值

joe*_*hon 2 knockout.js

我有:

 <select name="test" id="test" class="" 
  data-bind="
  options: myArray, 
  value: idSelected,
  optionsText: 'name',
  optionsValue: 'id',
 optionsCaption: 'All'">
Run Code Online (Sandbox Code Playgroud)

我不仅仅想要 id,当您从列表中选择一个项目时,我想在对象中设置数组的 id 和名称。样本:

我想要这个结果:

  idSelected = {id:1, name:'Test'};
Run Code Online (Sandbox Code Playgroud)

adi*_*iga 5

只需从您的绑定中删除即可optionsValue。这会将 设定idSelected为 的对象observableArray而不是字符串(文档

这是一个工作片段:

var viewModel = function() {
  var self = this;

  self.myArray = ko.observableArray([{
    id: 1,
    name: 'Test 1'
  }, {
    id: 2,
    name: 'Test 2'
  }]);

  self.idSelected = ko.observable();

  self.idSelected.subscribe((selected) => {
    console.log(self.idSelected());
  });
}

ko.applyBindings(new viewModel());
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

<select name="test" id="test" class="" data-bind="
  options: myArray, 
  value: idSelected,
  optionsText: 'name',
 optionsCaption: 'All'">
Run Code Online (Sandbox Code Playgroud)