有人可以解释为什么当我点击'禁用内容'单选按钮时它会工作(前两个单选按钮被禁用)但是当我点击'启用内容'时/ 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">
感谢。
答案 0 :(得分:2)
在您的计算中,newValue
将保留"true"
和"false"
字符串,而不是true
和false
布尔值。
所以你需要转换:
write: function (newValue) {
var val = (newValue==='undefined') ? undefined : newValue;
observable(val == 'true');
},
您的代码首次运行,因为在JavaScript中,每个非空字符串在逻辑表达式中“评估”为true
。