2016-04-29 92 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; 
    }); 
};