2016-10-19 4 views
2

ノックアウト私はラジオのリストに割り当てられた同じ観察可能な値を持つデータバインドし、ドロップダウンリストのための「値」データバインドラジオ&ドロップダウン -

「をチェックし」
<select name="controls" data-bind="options: cars(), optionsText:'make', optionsValue:'id', value: $root.selectedId, optionsCaption: 'Select One'"> </select> 

<div data-bind="foreach: cars"> 
     <div> 
     <input type="radio" name="controls" data-bind="checked: $root.selectedId, checkedValue: id, value: id"><div data-bind="text:make"> 
     </div> 
</div> 

以降は、常にデフォルトでいくつかの値を保持しているドロップダウン'1つ選択'または選択した値。ユーザがラジオボタンリストで選択することを許可しない。ユーザーがラジオボタンをクリックすると、チェック/選択が行われません。

私は2つの異なる観測によって修正することができますが、いくつかの理由に、私は同じ観測可能

jsFiddleに滞在したいため - 提供フィドルについてはhttps://jsfiddle.net/9vm01e3r/2/

+0

あなたが作業フィドルを提供してもらえますか? – AldoRomo88

+0

@ AldoRomo88フィドルが含まれています。何らかの理由で、ラジオボタンが観測可能な配列から読み込まれません。しかし、他のラジオボタンと同様の問題。 jsFiddle - https://jsfiddle.net/9vm01e3r/ – user472269

答えて

1

私はあなたのHTML内の二つの異なる問題を特定

  1. foreachの中でバインディングコンテキストが現在のアイテムに変更された場合は、selectedCarプロパティにアクセスするには、$parentを使用する必要があります。
  2. 入力/ラジオがこのバインディングが処理されるとき、結合テキストとラベルの中にあったすべての内部コンテンツに

を交換しているあなたのHTMLは、この

<div data-bind="foreach: cars"> 
<label data-bind="text:name"></label> 
<input type="radio" data-bind="checked: $parent.selectedCar, checkedValue: id, value: id" /> 
</div> 

編集

ようになります必要があります

私はoptionsの配列にないので、選択されたタグの有効な項目ではないラジオからオプションをクリックすると、何が起きているのかを知っています。ノックアウトは01を設定しますを未定義に設定すると、ラジオの選択が解除されます。

だから、一つの代替は、selectタグ(ドキュメントhere)にvalueAllowUnset: trueを使用するようになります

SEこの更新フィドル https://jsfiddle.net/tbdo4rxq/

+0

ありがとう、ここに私の更新された手伝いですhttps://jsfiddle.net/9vm01e3r/2/ – user472269

+0

素晴らしい!これで問題の95%が修正されました。ラジオリストから何かを選ぶとき。ドロップダウンは空白になります。デフォルトの "Select One"を作ることは可能ですか – user472269

+0

私はそれが可能であるとは思わない、その効果のためには、もっと複雑な解決策が必要かもしれません。オリジナルは異なる観測値を使用することを提案します – AldoRomo88