0

我的 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 版本

4

1 回答 1

1

我已经订阅了绑定到复选框的 observable,这似乎适用于 IE 10 和 Chrome 以及 FF:

var isChecked = ko.observable(false);
isChecked.subscribe(function (newValue) {
    if (newValue) {
        // This is the new value of the checkbox observable
    }
于 2013-07-15T13:55:28.383 回答