答案 0 :(得分:2)
在两个绑定中,您使用的是value: value
。这意味着两个select
元素的值都绑定到同一个模型属性,称为value
。您正在使用具有不同对象的不同数组,因此单个值无法正常运行。尝试使用两个不同的属性来存储值,例如:
var vm = {
firstDropdownOptions: ko.observableArray([
{ value: -1, title: 'Select Type' },
{ value: 111, title: 'Option 1' },
{ value: 222, title: 'Option 2' },
{ value: 333, title: 'Option 3' }
]),
secondDropdownOptions: ko.observableArray([
{ value: -1, title: 'Select Type' },
{ value: 1, title: 'Option New 1' },
{ value: 2, title: 'Option New 2' },
{ value: 3, title: 'Option New 3' }
]),
// property for storing selected value of firstDropdownOptions:
selectedFirstOptionValue: ko.observable(''),
// property for storing selected value of secondDropdownOptions:
selectedSecondOptionValue: ko.observable('')
};
ko.applyBindings(vm);
分别在HTML绑定属性selectedFirstOptionValue
和selectedSecondOptionValue
中(属性将包含数组中的对象):
<select id="first" data-bind="options: firstDropdownOptions, optionsText: 'title', value: selectedFirstOptionValue"></select>
<select id="second" data-bind="options: secondDropdownOptions, optionsText: 'title', value: selectedSecondOptionValue"></select>
这是一个有效的jsFiddle
答案 1 :(得分:0)
作为dotnetom答案的替代品,这对我也有用。
我没有使用不同的属性在viewmodel.js中存储所选的值,而是使用了view.html中的firstDropdownOptions().value
和firstDropdownOptions().value
。
view.html
<select data-bind="options: firstDropdownOptions, optionsText: 'title', value: firstDropdownOptions().value"></select>
<select data-bind="options: secondDropdownOptions, optionsText: 'title', value: secondDropdownOptions().value"></select>
viewmodel.js
var vm = {
firstDropdownOptions: ko.observableArray([
{ value: -1, title: 'Select Type' },
{ value: 111, title: 'Option 1' },
{ value: 222, title: 'Option 2' },
{ value: 333, title: 'Option 3' }
]),
secondDropdownOptions: ko.observableArray([
{ value: -1, title: 'Select Type' },
{ value: 1, title: 'Option New 1' },
{ value: 2, title: 'Option New 2' },
{ value: 3, title: 'Option New 3' }
])
};
ko.applyBindings(vm);
这是fiddle。