Javascript 单选按钮选中绑定html5、durandal

Javascript 单选按钮选中绑定html5、durandal,javascript,html,knockout.js,durandal,Javascript,Html,Knockout.js,Durandal,尽管我在这个网站上看到了很多类似的问题,但没有人回答我的问题。 所以,请不要因为我再次讨论这个话题而生我的气。 我在durandal项目工作,我有html页面,后面有javascript文件。 我有两个单选按钮在其中一页。 我希望它们的“checked”属性绑定到视图模型中的变量。 看起来很简单。。。但事实并非如此! 我尝试了两种方法,其中任何一种都没有成功: 第一种方式:在html中: <input type="radio"

尽管我在这个网站上看到了很多类似的问题,但没有人回答我的问题。 所以,请不要因为我再次讨论这个话题而生我的气。 我在durandal项目工作,我有html页面,后面有javascript文件。 我有两个单选按钮在其中一页。 我希望它们的“checked”属性绑定到视图模型中的变量。 看起来很简单。。。但事实并非如此! 我尝试了两种方法,其中任何一种都没有成功:

第一种方式:在html中:

                             <input type="radio"
                                    name="radSearchBy"
                                    id="byNo"
                                    data-bind:"checked:isId" />

          in javascript:
                         isId: ko.observable(true)      
          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** />    

是的,“checked”一词后面没有任何内容-它工作得很好。

但这是一个问题,因为我怎么做*绑定*


请尽快帮助我。

不幸的是,答案有点复杂。单选按钮将可观察对象的值与单选按钮的值属性相匹配。在布尔型的情况下,不可能简单地处理,因为HTML将返回字符串形式的“true”或“false”,而不是布尔型

解决方案需要AFAIK计算可观测值:

HTML
所以什么不起作用?您是否阅读了
选中的
绑定的文档。因为它包含单选按钮的解决方案:
,所以当且仅当参数值等于单选按钮节点的value属性时,KO将设置要检查的元素。因此,您的参数值应该是字符串。在上一个示例中,仅当视图模型的spamFlavor属性等于“almond”时,才选中value=“almond”单选按钮。
<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'); }
});