2016-04-29 89 views
0

我有一个ng-repeat显示来自json的项目,这取决于用户输入到可以过滤的字段中。AngularJS为每个ng-repeat集合中的对象属性设置

<tr ng-repeat="i in filteredItems = (iso3166 | filter: {alpha_2: isoQuery})">

这一切按预期工作。

组中的每个项目(“iso3166”)对于“许可证”,“禁止”和“大小”列中的每一列都有3个布尔值,“受限”,“无限制”和“未分类”。

用户可以设置这些值的一个每行中为真或假的每一列:

enter image description here

这工作得很好。

我需要添加的是顶部的“ALL”行,它将过滤集中的每一项设置为每列中单击的按钮。

enter image description here

换句话说,如果用户点击了“许可证”列中的所有行“限制”按钮,每一行的“许可证”,“限制”的价值应该被切换为true或false。我不确定设置值的语法。

现在我有NG-点击作为

ng-click="setAll('col1','licensed')"

和功能

$scope.setAll = function (column, value) { 
    angular.forEach($scope.filteredItems, function (value, key) { 
     ?? 
    }); 
    }; 

如何正确的值分配给每个行的循环?

+1

对不起。编辑了这个问题。 – Steve

+1

但是,如果您有过滤项目,为什么不只是'value [column] = value'? – Patrick

+1

虽然你需要改变局部变量的名字,否则它会被遮蔽。'function(item,key){item [column] = value; }' – Patrick

回答

0

此时你的内部函数会遮蔽value变量。将局部变量重命名为其他内容以便更改它。

$scope.setAll = function (column, value) { 
    angular.forEach($scope.filteredItems, function (item, key) { 
    item[column] = value; 
    }); 
};