1

有人能解释一下为什么当我点击“禁用事物”单选按钮时它可以工作(前两个单选按钮被禁用)但是当我点击“启用事物”时什么也没发生?

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">

谢谢。

4

1 回答 1

2

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

所以你需要转换:

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

演示JSFiddle。

您的代码第一次工作是因为在 JavaScript 中,每个非空字符串都会true在逻辑表达式中“计算”。

于 2013-04-29T14:29:56.557 回答