それ自体が ng-repeat ディレクティブにネストされている ng-repeat ディレクティブの「内」で ng-model を使用しようとしています。
次のjsfiddleは、私の問題とそれを解決するための2つの試みを示しています。
私のコントローラーは次のように定義されています:
var mod = angular.module('TestApp', []);
mod.controller('TestCtrl', function ($scope) {
var machine = {};
machine.noteMatrix = [
[false, false, false],
[false, true, false],
[false, false, false]
];
$scope.machine = machine;
// ...
});
1.
<table>
<thead>
<tr>
<th>--</th>
<th ng-repeat="no in machine.noteMatrix[0]">{{$index+1}}</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="track in machine.noteMatrix">
<td>--</td>
<td ng-repeat="step in track">
<input type="checkbox" ng-model="track[$index]"> {{step}}
</td>
</tr>
</tbody>
</table>
最初の例/試行では、コントローラー内の machine.noteMatrix を更新しますが、チェックボックスが押されるたびに、angularjs は JavaScript コンソールに次のエラーを 2 回表示します。
リピーターでの重複は許可されていません。リピーター: ステップ イン トラック
また、次のエラーが表示されることもあります。
リピーターでの重複は許可されていません。リピーター: machine.noteMatrix[0] ではありません
2.
<table>
<thead>
<tr>
<th>--</th>
<th ng-repeat="no in machine.noteMatrix[0]">{{$index+1}}</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="track in machine.noteMatrix">
<td>--</td>
<td ng-repeat="step in track">
<input type="checkbox" ng-model="step"> {{step}}
</td>
</tr>
</tbody>
</table>
2 番目の例/試行では、noteMatrix からデータを正しく読み取り、チェックボックスをオンまたはオフにしても、javascript コンソールにエラーは表示されません。ただし、それらの状態を変更しても、コントローラーの machine.noteMatrix は更新されません (「マトリックスを表示」ボタンを押して、jsfiddle でマトリックスを表示します)。
誰でもこれに光を当てることができますか?:)