49

ng-repeat を使用して一連のラジオ ボタンを生成し、そのうちの 1 つが選択されたときにモデルを更新しようとしています。これは機能していないようです。

無線入力が ng-repeat によって生成されるのではなく、ハードコーディングされている場合、同じマークアップが問題なく機能します。

これは機能します:

<input type="radio" ng-model="lunch" value="chicken" name="lunch">
<input type="radio" ng-model="lunch" value="beef" name="lunch">
<input type="radio" ng-model="lunch" value="fish" name="lunch">  
{{lunch}}

これはしません:

<input type="radio" ng-model="lunch" ng-repeat="m in meat" value="m" name="lunch">    
{{lunch}}

ここで両方を示す jsfiddle を参照してください: http://jsfiddle.net/mark_up/A2qCS/1/

どんな助けでも大歓迎です。

ありがとう

4

3 に答える 3

4

上記の問題はここで議論されました

これは、ng-repeat が新しいスコープを作成するために発生します。基本的に、それぞれ<input>が独自の内部スコープで selectedOption 値を作成しています。これを回避するには、その値の新しいコンテナ オブジェクトを作成します。たとえば、コントローラーで次のように宣言できます。

$scope.data = {selectedOption: x};

そして、テンプレートで使用しますng-model="data.selectedOption"

このようにして、ng-modelが更新されます.. :)

これはトリッキーです

于 2016-04-05T21:51:33.303 に答える