我的 JS 文件中有这段代码用于淘汰赛:
function ProductOptionValue(id, name, option) {
var self = this;
self.id = id;
self.name = name;
self.optionID = option;
self.isSelected = ko.observable(false);
}
self.optionValueChanged = function (optionValue, event) {
if (optionValue.isSelected()) {
// .....
} else {
// ...
}
};
绑定看起来像这样:
<ul data-bind="foreach: values">
<li>
<input type="checkbox" data-bind="checked: isSelected, attr: {id: 'ov'+id}, event: {change: $root.optionValueChanged}"/>
<label data-bind="text: name, attr: {for: 'ov'+id}"></label>
</li>
</ul>
问题是,在 IE (10) 和 Chrome 中,当调用 optionValueChanged 时,我在 optionValue 中获得 isSelected 的旧值,但在 FF 中是新值,因此所有逻辑都反转了。
以前有人遇到过这种不一致吗?我应该怎么做才能防止它。
我使用库的 2.2.1 版本