单选按钮选中结合HTML5,迪朗达尔(radio button checked binding ht

2019-10-18 18:35发布

甚至,我看到在这个网站很多类似的问题,他们没有一个回答我的问题。 所以恳求,不要生我的气,我再讨论这个问题。 我在迪朗达尔项目上工作,我有一个背后的JavaScript文件的HTML页面。 我在一个页面中两个单选按钮。 我希望自己的“选中”属性将在视图模型背后绑定到一个变量。 它看起来简单......但它不是! 我尝试两种方式,它们中的任何一个没有成功:

第一路:在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" />     

这是行不通的。 只有whem我写的:

                     <input type="radio"
                                    name="radSearchBy"
                                    id="byNo"
                                    **checked** />    

是的,“查”字没有任何后续效果很好。

但它的问题,becouse我该怎么办呢* 绑定 ? *

请帮我那么快,你可以。

Answer 1:

遗憾的是,答案是有点复杂。 单选按钮你观察到的值相匹配的单选按钮的value属性。 在布尔情况下,不可能简单地处理,因为HTML将返回“真”或“假”的字符串,而不是布尔。

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

HTML

<input type="radio"
    name="radSearchBy"
    value="true"
    data-bind="checked: value" />True
<input type="radio"
    name="radSearchBy"
    value="false"
    data-bind="checked: value" />False

JavaScript的

radSearchBy = ko.observable(true);
value = ko.computed({
    read: function() { return radSearchBy.toString(); },
    write: function(val) { radSearchBy(val === 'true'); }
});


文章来源: radio button checked binding html5, durandal