我有:
<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)
只需从您的绑定中删除即可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)