【发布时间】:2016-03-07 21:13:02
【问题描述】:
我目前有以下 HTML...
<input type="radio" style="height: 12px; width: 20px;" name="physTabPregRadio" value="true" data-bind="checked: pregnant.radioBool" />Y
<input type="radio" style="height: 12px; width: 20px;" name="physTabPregRadio" value="false" data-bind="checked: pregnant.radioBool" />N
<span data-bind="text: pregnant.radioBool" />
...radioBool 函数是 ko 的扩展,定义在这里...
ko.observable.radioBool = function () {
var observable = ko.observable();
observable.radioBool = ko.computed({
read: function () {
if (observable() === true) return 'true';
else if (observable() === false) return 'false';
else return 'unknown';
},
write: function (v) {
if (v.toLowerCase() === 'true') observable(true);
else if (v.toLowerCase() === 'false') observable(false);
else observable(undefined);
}
});
return observable;
};
...并且像这样在模型中初始化...
self.pregnant = ko.observable.radioBool();
self.pregnant(false);
加载页面时,没有选中任何单选按钮,但 span 的文本为“false”。是否有任何潜在的原因导致单选按钮不被选中,即使它的值等于单选按钮的值之一?
【问题讨论】:
-
您能创建一个这样的工作示例吗? I failed to reproduce it.
-
你想用这种方法完成什么?
-
@MikeC 我认为您需要使用 radioBool。更新小提琴:jsfiddle.net/hp8jter2/1
-
@MikeC: 怀孕:ko.observable.radioBool()
标签: javascript html knockout.js