我有选择由KnockoutJS填充的选项
HTML的相关部分:
<label>Gender:</label>
<select data-bind="options: gender, value: selectedGender, optionsText: 'gender'"></select>
app.js的相关部分:
this.gender = ko.observableArray([{gender: '', value: ''},{gender: 'F', value: 'female'},{gender: 'M', value: 'male'}]);
this.selectedGender = ko.observable();
kn.constructorEnd(this);
var self = this;
this.selectedGenderVal = ko.computed(function () {
return self.selectedGender() && self.selectedGender().value;
})
然后我在点击事件上添加了数据绑定到我的模态关闭图标。所有可观察的数据都被清除,除了上面的选择,我试图清除这一点:
self.selectedGender("");
为什么不将它设置为空值?
答案 0 :(得分:1)
您的选择控件设置时没有“selectedValue”绑定,因此默认情况下整个选项对象将存储在“selectedGender”可观察对象中。因此,当您尝试选择空字符串值时,select控件不知道如何将其转换为数组中的某个选项对象。
如果添加optionsValue: 'gender'
绑定,则它知道使用性别可观察对象中的字符串值比较值,而不是将整个对象相互比较。