我有以下标记
<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 表达式,还是我滥用了角度?