2016-08-23 18 views
3

私はAngularを使用して複数のオブジェクトを選択し、それらのすべてを3つのキーを使用して開始し、同じキーで終了し、その値も同じです。ワイルドカードを使用してすべてのオブジェクトを選択する

$scope.foo.one.bang = true; 
$scope.foo.two.bang = true; 
$scope.foo.three.bang = true; 
$scope.foo.four.bang = true; 
$scope.foo.five.bang = true; 

、以下の例のように、関連するすべてのオブジェクト?:

$scope.foo.[any].bang = true; 
+1

まあ、あなたは 'angular.forEach'ループを使うことができます。 – varit05

+2

私は角度が分かりませんが、普通のJSではおそらく 'Object.keys($ scope.foo).forEach(k => $ scope.foo [k] .bang = true);'(arrowの使用関数は明らかにオプションです)。 – nnnnnn

答えて

0

を選択するために、第2のキーにワイルドカードを使用するための組み込みのショートカットは最初、私たちのようにすべてを設定され、これを試してみてくださいあり"true"を指定し、次にangular.forEachを使用してallをfalseに設定します。

$scope.foo ={} 
    $scope.foo.one={} 
    $scope.foo.two={} 
    $scope.foo.three={} 
    $scope.foo.four={} 
    $scope.foo.five={} 
    $scope.foo.one.bang = true; 
    $scope.foo.two.bang = true; 
    $scope.foo.three.bang = true; 
    $scope.foo.four.bang = true; 
    $scope.foo.five.bang = true; 

    angular.forEach($scope.foo, function(value, key) { 
     value.bang=false 
     console.log(value.bang); 
    }); 
0

Angular.jsに組み込みの方法はありません。 Angular.forEachループを使用することはできますが、純粋なJavascriptとかなり同じです。あなたが望むものを達成する最も簡単な方法は、単純な反復ループを使用することです。

var obj = $scope.foo; 
var objs = []; 

for(let i in obj) if(obj[i].bang === true) objs.push(bang[i]); 

console.log(objs); // All objects with that property 
関連する問題