1

このサイトで同様の質問が非常に多く見られますが、私の質問に答えてくれる人は誰もいません。お願いだから、私がこの話題をまた議論することに腹を立てないでください。私はdurandalプロジェクトで働いています.javascriptファイルを含むhtmlページがあります。ページの1つに2つのラジオボタンがあります。それらの「checked」属性を、ビューモデルの背後にある変数にバインドする必要があります。シンプルに見えますが、そうではありません!私は2つの方法を試しましたが、いずれも成功しませんでした:

最初の方法: 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** />    

はい、何も付いていない「チェックされた」単語-それはうまく機能します。

しかし、どうすればそれを行うことができるので、それは問題です*バインディング*

できるだけ早く私を助けてください。

4

1 に答える 1

0

残念ながら、答えは少し複雑です。ラジオ ボタンは、オブザーバブルの値をラジオ ボタンの value 属性に一致させます。ブール値の場合、HTML は「true」または「false」をブール値ではなく文字列として返すため、単純に処理することはできません。

ソリューションには、 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'); }
});
于 2013-10-15T17:35:42.797 に答える