2016-04-29 6 views
0

ユーザーがフィールドに入力した内容に基づいて、jsonの項目を表示してng-repeatをフィルタリングできます。AngularJS for ng-repeatの各オブジェクトプロパティが見つかりました

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

予想通り、このすべての作品。

グループ( "iso3166")の各項目には、それぞれ "license"、 "prohibited"、 "size"の3つのブール値、 "restricted"、 "unrestricted"、 "unclassified"があります。

ユーザは、真または偽の各行の各列にこれらのいずれかの値を設定することができます。これは、正常に動作

enter image description here

私が追加する必要があるのは、フィルタされたセット内のすべてのアイテムを各列でクリックされたボタンに設定する「ALL」行です。言い換えれば

enter image description here

ユーザーは、「ライセンス」列内のすべての行を「制限」ボタンをクリックした場合、すべての行の「ライセンス」「制限」の値は、trueまたはfalseに切り替えるべきです。値を設定する構文がわからない。

は今、私は、ループ内の各列に正しい値を代入するにはどうすればよい

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

として

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

と関数としてNGクリックを持っていますか?

+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; 
    }); 
}; 
関連する問題