次のマークアップがあります
<div ng-app>
<table ng-controller="test">
<tbody>
<tr ng-repeat="row in rows">
<td ng-repeat="col in cols">
<input type="text" ng-model="row[col].val" />
</td>
</tr>
</tbody>
</table>
</div>
コントローラーはこんな感じ
function test($scope) {
$scope.cols = ["col1", "col2", "col3"];
$scope.rows = [{
col1: { val: "x"}
}, {
col2: { val: "y" }
}]
}
まだ存在しない列の値を設定しようとすると、
「未定義のプロパティ 'val' を設定できません」.
例はこちらhttp://jsfiddle.net/z9NkG/2/
ドキュメントには注意があります:
ngModel は、現在のスコープで式を評価することによって、指定されたプロパティにバインドしようとします。プロパティがこのスコープにまだ存在しない場合は、暗黙的に作成され、スコープに追加されます。
ただし、プロパティ名の代わりにインデクサーを使用すると失敗します。
ngModel 式を動的に定義する方法はありますか、それとも角度を誤用していますか?