我有一个基本的crud应用程序,我隐藏表中的列以显示用户想要看到的输入。我设法通过将ng-model
绑定到表列并将相同模型绑定到复选框来显示/隐藏输入,因此在选中复选框时它会隐藏。
因为我有很多数据我不想在我的模板中保留输入,所以我决定改为ng-repeat
。
继承人我的控制人员:
// simplified for this Q
$scope.columns = [
{ name: '#ID', checked: false, model: 'checkedId' },
{ name: 'Container', checked: false, model: 'checkedContainer' },
{ name: 'Type', checked: true, model: 'checkedType' }
];
这是我的html(在呈现之前):
<label ng-repeat="col in columns">
<input type="checkbox" name="cols[]" value="{{col.name}}"
ng-checked="col.checked" ng-model="col.model"><span>{{col.name}}</span>
</label>
渲染的html如下所示:(对于数组中的第二项[数组插槽1])
<label ng-repeat="col in columns" class="ng-scope">
<input type="checkbox" name="cols[]" value="Container"
ng-checked="col.checked"
ng-model="col.model" class="ng-pristine ng-valid">
<span class="ng-binding">Container</span>
</label>
我隐藏了这样的元素:
<input type="checkbox" ng-model="checkedContainer"><span>checkedId</span>
要隐藏的元素看起来像这样(另一个转发器)
<td class="check-element" ng-hide="checkedContainer">{{ c.container }}</td>
所以mg模型绑定到列,如果我手动插入输入,如上所述,它的工作原理。但是当它循环时它不会。我解决问题是循环。因此,模型不会被评估,但在html中保持为“col-model”。有没有办法将模型评估到$scope.columns
数组中的相应模型?
基本上我希望我的$scope.columns.model
被评估为它所属的模型。我设法将值与更改mg-model绑定到ng-bind,但这对于数据绑定不起作用,因为我理解它只是单向的。
答案 0 :(得分:2)
解决方法,在您的范围中添加$scope.scope = $scope;
,然后分配如下的模型:
ng-model="scope[col.model]"
工作示例:http://jsfiddle.net/cherniv/Ydbhj/
更新:明白了!我们知道,ng-repeat
会创建一个新的scope
,因此在这种情况下会有效:
ng-model="$parent[col.model]"
并且不需要$scope.scope = $scope;