我正在使用knockout.js,而且它没有设置空选项的值(四):
<select data-bind="value: item.widgetValue, attr: {id: item.widgetName, name: item.widgetName}, options: item.options, optionsText: ‘label’, optionsValue: ‘value’” id=”fld-“ name=”fld0”>
<option value=”one”>One</option>
<option value=”two”>Two</option>
<option value=”three”>Three</option>
<option value>Four</option>
...
</select>
这会产生一个问题:当你选择任何选项并尝试选择Four时,它会选择One;它只会在您第二次尝试选择时选择四。
我尝试更改敲除数据绑定来修复它:
value: $.trim(item.widgetValue)
这允许您立即选择四,但在提交四个选定的表单后,错误地将One显示为已选中。
有关可能导致此问题的原因或如何解决问题的任何想法?
答案 0 :(得分:0)
如果在select元素上使用选项绑定,则不应手动设置选项。如果那些是由绑定动态创建的(即你实际上是使用item.options作为你的源),那么检查你绑定select元素的对象 -
item.options可能看起来像这样(缺少值或者某种程度上不像其他选项) -
item.options = [
{ label: 'someLabel1', value: 'someValue1' },
{ label: 'someLabel2', value: 'someValue2' },
{ label: 'someLabel3', 'someValue3' }
];
但应该是一个更加统一的对象(明确定义的模型) -
function optionModel(label, value) {
var self = this;
self.label = ko.observable(label);
self.value = ko.observable(value);
}
item.options = [
new optionModel('someLabel1', 'someValue1'),
new optionModel('someLabel2', 'someValue2'),
new optionModel('someLabel3', 'someValue3')
];