2013-05-28 2 views
5

2つのラジオボタンがあります。knockout.jsを使用してラジオボタンをチェックする方法を設定しますか?

<td> 
    <div style="display: inline; margin-right: 10px"> 
     <input type="radio" name="USGlobalUser" data-bind:"checked:IsGlobal/>US 
    </div> 
    <div style="display: inline"> 
     <input type="radio" name="USGlobalUser" data-bind:"checked:IsGlobal"/>Global 
    </div> 
</td> 

私は値が完全にDBから来て、そのがtrue/falseのようself.IsGlobalに移入取得この

QuestionnaireModel = function (data) { 
    self.IsGlobal = ko.protectedObservable(data ? data.IsGlobal : false); 
} 

ように私のモデルを投入しています。このtrue/falseに基づいて、ラジオボタンをオンにしたいと思います。

+0

あなたの質問は何ですか?また、構文エラーがあります。最初の "checked:IsGlobal"の後に引用符がありません。 –

+0

それを修正しました。構文エラーを報告してくれてありがとう。 – NayeemKhan

答えて

13

checked binding作品:

For radio buttons, KO will set the element to be checked if and only if the parameter value equals the radio button node’s value attribute. So, your parameter value should be a string.

だからあなたIsGlobalは、文字列を保持する必要がありますし、ラジオボタンの値と同じ文字列を持っている必要があります:

<input type="radio" name="USGlobalUser" 
     data-bind="checked: IsGlobalCheckbox" value="false" />US 
<input type="radio" name="USGlobalUser" 
     data-bind="checked: IsGlobalCheckbox" value="true" />Global 

あなたのビューモデル内:

self.IsGlobal = ko.observable(data ? data.IsGlobal + "" : "false"); 

あなたが変換を行うラジオボタンのための新しい計算されたプロパティを作成する必要がブール値格納するIsGlobalを維持したい場合:

​​

デモJSFIddle.

ところでなどをトマスはあなたのサンプルで拘束されたシスタックスが壊れていると指摘しました。 DBから

+0

ノックアウト3.3でこれはまだ正確ですか? – alex

+0

@alexはい、チェックされたバインディングはKnockout 3.3でも同じように動作しています – nemesv

0

data-bindの後には、属性はコロンではなく等号にする必要があります。ラジオボタンのための異なっ

<input type="radio" name="USGlobalUser" data-bind="checked:IsGlobal"/> 
+0

'=' not working – NayeemKhan

+0

私はそれを修正しました。私はKOの新人です。ありがとう – NayeemKhan

2

値はブール真/偽

である私はviewmodelの変更:

self.IsGlobal = ko.protectedObservable(data ? data.IsGlobal.toString() : ""); 

とCSHTMLに:

<td> 
    <div style="display: inline; margin-right: 10px"> 
     <input type="radio" name="USGlobalUser" value="false" data-bind="checked:IsGlobal()" />US       
    </div> 
    <div style="display: inline"> 
     <input type="radio" name="USGlobalUser" value="true" data-bind="checked:IsGlobal()" />Global 
    </div> 
</td> 
関連する問題