即使我在这个网站上看到很多类似的问题,但我的问题中没有一个回答。 如此请求,不要生我的气,我再次讨论这个话题。 我在durandal项目工作,我有html页面,后面有javascript文件。 我在其中一个页面中有两个单选按钮。 我希望他们的“checked”属性绑定到后面的视图模型中的变量。 它看起来很简单......但事实并非如此! 我尝试了两种方法,其中任何一种都没有成功:
html中的第一方::
<input type="radio"
name="radSearchBy"
id="byNo"
data-bind:"checked:isId" />
in javascript:
isId: ko.observable(true)
html中的第二路::
in javascript:
isId: ko.observable("checked")
我知道这是什么问题。 即使我只是写
<input type="radio"
name="radSearchBy"
id="byNo"
data-bind:"checked:true" />
或:
<input type="radio"
name="radSearchBy"
id="byNo"
checked="checked" />
它不起作用。 只有我写的:
<input type="radio"
name="radSearchBy"
id="byNo"
**checked** />
是的,没有任何内容的“已检查”字词效果很好。
但这是问题,因为我该怎么做* 绑定 ? *
请尽快帮助我。
答案 0 :(得分:0)
不幸的是,答案有点复杂。单选按钮将您的observable的值与单选按钮的value属性相匹配。在布尔值的情况下,不可能简单地处理,因为HTML将返回'true'或'false'作为字符串,而不是布尔值。
解决方案需要 AFAIK计算的observables:
<input type="radio"
name="radSearchBy"
value="true"
data-bind="checked: value" />True
<input type="radio"
name="radSearchBy"
value="false"
data-bind="checked: value" />False
radSearchBy = ko.observable(true);
value = ko.computed({
read: function() { return radSearchBy.toString(); },
write: function(val) { radSearchBy(val === 'true'); }
});