无法在knockoutjs中选中复选框

时间:2013-06-11 07:32:11

标签: knockout.js knockout-2.0

我有这个代码示例:

http://jsfiddle.net/nickbuus/eUufc/15/

我试图使复选框具有正常的检查/取消选中行为。它工作正常,直到我为每个复选框添加一个onclick事件。此onclick事件调用此方法:

 self.saveIsMeasureChecked = function (item) 

在此方法结束后,复选框将在检查/取消选中之前返回其旧状态 - 这使得您看起来根本无法更改checbox的状态。

1 个答案:

答案 0 :(得分:4)

您需要从点击事件处理程序返回true以触发浏览器默认行为(另请参阅documentation允许默认点击操作部分)

self.saveIsMeasureChecked = function (item) {
    //Do something
    return true;
};

演示JSFiddle.

然而,似乎在Knockout中有一些不太正确的东西,因为当你在复选框上使用value绑定和click绑定时,你需要第一次点击两次来复选框变化

但是如果你使用attr绑定设置值,一切似乎都没问题。

<input name="cbIsMeasureChecked" type="checkbox" 
       data-bind="attr: {value: foodId}, 
       checked: isMeasureChecked, 
       click: $root.saveIsMeasureChecked" />

演示JSFiddle.