2017-12-28 25 views
0

私はangularjsでこのような作業形式を選択しました。角型選択オプションとラジオボタン

<select ng-model="selectedProduct" 
    ng-options="product as product.text for product in products"> 
</select> 

製品には2つのオプションしかないので、これをラジオボタンに変更したいと思います。 UIが改善されます。上の出力はvalue=0value=1の選択肢です。

<div ng-repeat="product in products"> 
    <input id="{{product.productId}}" type="radio" 
     name="BlahBlah" ng-value="{{$index}}" ng-model="selectedProduct" required /> 
    <label for="{{product.productId}}"> 
     {{product.text}} 
    </label> 
</div> 

$indexだけの選択オプションと同様、ラジオボタンのvalue=0value=1レンダリング:

は、私はこれを試してみました。しかし、それは動作しません。データは、コントローラによってピックアップされずに渡されます。可能であれば、コントローラ内のものを書き換えたくないと思います。

私はこれが非常に簡単だと思った: -/ ここに進むにはどうしたらよいですか?

答えて

0

あなたの選択NG-モデルは、製品のオブジェクトではなく、0または1の等価はちょうど

<input type="radio" name="BlahBlah" ng-value="product" ng-model="selectedProduct" /> 

デモのようになります。http://plnkr.co/edit/OLfcAwv4wEX2K3mAxBxK?p=preview

+0

はこのデモをありがとう!とても興味深い。あなたのデモでは、選択とラジオがリンクされています - 互いに更新されます。 'ng-value'を' product'に変更しようとすると、selectは本当にラジオを更新しますが、逆のことはしません。ラジオボタンを使用しても、正しいデータが次のステップに渡されることはありません。しかし、選択されます。私は今混乱している。すべてのヒントにぴったりです。 – martinlex

+0

これは、あなたがng-modelとして 'selectedProduct'を使ったからです。絶対にしないでください。あなたのngモデルにはいつもドットがあります。 ng-repeatは独自の範囲を定義し、あなたの無線機はng-repeatの内部にあります。したがってラジオを選択すると、コントローラの範囲ではなく、ng-repeatの範囲で 'selectedProduct'が設定されます。ちょうど私のようにして、あなたのコントローラにモデルオブジェクトを定義してください。そしてあなたのモデルとして 'model.selectedProduct'を使用してください。 –

+0

これは素晴らしいです。どうもありがとうございます! – martinlex

関連する問題