2017-06-07 14 views
1

クライアントのIonicアプリに対していくつかの更新を行っていますが、バインディングに固執しています。Angular ngRepeat - ラジオボタンを含む複数のオブジェクトを持つ方法

いくつかのフィールドにはいくつかのラジオボタンを含むフォームがあります。

など。

<div class="fields"> 
    <input ng-model="student.name" type="text" name="student_name" id="name" /> 

    <input ng-model="student.has_booked" type="radio" checked="checked" name="made_booking" id="made_booking_yes" value="1" /> 
</div> 

更新要求は、この最初の形式で詳細を複製ボタンを有し、それらは通常類似しているような詳細は、他の生徒のために使用することができる配列にそのを追加することです。これを行うには

私は、このメソッドを呼び出すボタンがあります。

$scope.additionalStudents = []; // <-- for context of question 

$scope.duplicateStudentDetails = function() { 
    var firstStudent = angular.copy($scope.student); 
    $scope.additionalStudents.push(firstStudent); 
} 

が続いて私の見解で:

<div class="fields" ng-repeat="(key, student) in additionalStudents track by $index"> 
    <input ng-model="student.name" type="text" name="student_name" id="name" /> 

    <input ng-model="student.has_booked" type="radio" checked="checked" name="made_booking" id="made_booking_yes" value="1" /> 
</div> 

私が午前問題は名前が独立して変更することが来たことであるが、しかし、チェックボックスは元の学生に常に影響します。私が推測しているのは、名前属性のためです...

どうすればこの問題を回避できますか?

+0

おそらく '$ scope.student'が既に定義されているので、私たちadditionalStudents' – Sajal

+0

@Sajalのe ng-repeat = "(key、stud)同じことを考えていましたが、なぜテキストボックスで正しく動作するのでしょうか? –

+0

@Lovelockあなたが言ったようにname属性に同じ値を持つことはできません。 –

答えて

1

問題の解決方法は2つあります。あなたのケースは

その後の予約状況を変更するには、ステータスを表示しないようにするだけであれば

、削除name属性

あなたは将来

での予約のステータスを変更したい場合異なる名前のを持つ方が良い

関連する問題