我有一个淘汰赛选择如下
可观察数组
issuingCountries
0:
ObjectCoordinatorRegion: "EU"
Country: "Australia"
CountryId: 14
Id: 1
2:
ObjectCoordinatorRegion: "AU"
Country: "Japan"
CountryId: 16
Id: 2
HTML
<select class="issuing_country" data-bind="options: issuingCountries,
optionsText : 'Country',
value:IssuingcountrySelected,
optionsCaption:'---Select---',
"
>
</select>
我的问题是,我手中有{Country:“Japan”},所以如何在下拉菜单中设置选定的特定项目。 到目前为止我已经尝试了
$('.issuing_country option[text="Japan"]').prop('selected', true);
但失败了,让我知道另一种方法。 谢谢
答案 0 :(得分:2)
在使用knockout时,你不应该尝试使用jQuery设置类似的东西 - 而是在viewmodel上完成所有操作。
您的<select>
选项与issuingCountries
observableArray
绑定,所选值将绑定到IssuingcountrySelected
observable
。要自动选择一个选项,只需在viewmodel上设置属性,并且knockout将处理其余的选项:
//Assuming "Japan" is at index 2:
vm.IssuingcountrySelected(vm.issuingCountries()[2]);
如果您只知道要选择的选项的名称,首先您必须找到正确的项目,因此您需要一个功能:
function findCountryByName(name) {
for (var x = 0; x < vm.issuingCountries().length; x++) {
if (vm.issuingCountries()[x].Country == name)
return vm.issuingCountries()[x];
}
return null;
}
vm.IssuingcountrySelected(findCountryByName("Japan"));