当我用淘汰赛重新启用我的单选按钮时没有任何反应

时间:2013-04-29 14:23:29

标签: knockout.js

有人可以解释为什么当我点击'禁用内容'单选按钮时它会工作(前两个单选按钮被禁用)但是当我点击'启用内容'时/ strong>什么都没发生?

JsFiddle:http://jsfiddle.net/LkqTU/8822/

CMR convention: <input type="radio" name="cmrConvention" value="true" data-    bind="checkedRadioToBool: cmrConvention, disable: thirdPartyInsured() ? true : false">
<br/>
Out of CMR convention: <input type="radio" name="cmrConvention" value="false" data-bind="checkedRadioToBool: cmrConvention, disable: thirdPartyInsured() ? true : false">
<br/>
- - - - - -
<br/>
Enable things: <input type="radio" name="thirdParty" value="false" data-bind="checkedRadioToBool: thirdPartyInsured">
<br/>
Disable things: <input type="radio" name="thirdParty" value="true" data-bind="checkedRadioToBool: thirdPartyInsured">

感谢。

1 个答案:

答案 0 :(得分:2)

在您的计算中,newValue将保留"true""false" 字符串,而不是truefalse 布尔值。

所以你需要转换:

write: function (newValue) {
   var val = (newValue==='undefined') ? undefined : newValue;
   observable(val == 'true');
},

演示JSFiddle.

您的代码首次运行,因为在JavaScript中,每个非空字符串在逻辑表达式中“评估”为true