AngularJS将模型绑定到ng重复(并评估它)

时间:2013-10-17 08:55:30

标签: javascript angularjs

我有一个基本的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,但这对于数据绑定不起作用,因为我理解它只是单向的。

1 个答案:

答案 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;

最终解决方案:http://jsfiddle.net/cherniv/4CTgr/