2016-08-30 6 views
0

私のスコープ内にオブジェクトの配列があります。 さらに、ng-clickルーチンを装備したいボタンがあります。このボタンは、配列内のすべてのオブジェクトの特定の属性を変更します。Angular ng-clickはすべての配列要素を変更します

ng-clickでone-linerですべてを行うことはできますか?代替、私はまた、私はすべての要素を調整したいことを、機能と私のスコープを装備し、配列を渡すことができます

例:。

範囲:

{"languages": [ 
    { 
     "hide": false, 
     "title": "Deutsch", 
     "level": 7 
    }, 
    { 
     "hide": false, 
     "title": "Englisch", 
     "level": 6 
    }, 
    { 
     "hide": false, 
     "title": "Französisch", 
     "level": 2 
    }] 
} 

そして、私のそれぞれのボタン(現時点では擬似関数を使用しています)。

<a class="button" href="#" ng-click="angular.forEach($scope.languages, function (item, index) {item.hide=true});">Alle ausblenden</a> 

答えて

0

これをスコープの機能に入れてください。できるだけシンプルにあなたの意見を保つ。 JSコードをコントローラに入れて、単体テスト、文書化、書式設定ができるようにします。

そして、それがスコープ内にありますので、あなたも、配列を渡す必要はありません。

ng-click="hideAllLanguages()" 

はそれほど読みやすくはありませんか?

+0

簡単です。ただし、スコープ内の言語要素は1です。スコープ内の他の配列に対してもロジックを再利用したいと思います。私はそれを参照できるように、関数への参照をどのように渡すことができますか?例えば。場所、言語など – Nogga

+0

あなたは何を意味するのか分かりません。複数の配列で同じ関数を使用する場合は、配列を関数の引数として渡します。 –

+0

あなたは完全に正しいです。 $ scope.hideChildElements = function(parent){angular.forEach(parent、function(item、index){item.hide = true})この関数は次のようになります:ng-click = "hideChildElements(languages) ); } – Nogga

関連する問題