2016-08-04 4 views
0

2 ng-repeatを持っています。値の配列を追加し、ng-classを使用して配列内のすべての値をハイライト表示します

   $scope.setData=function(isSelected) { 
       $scope.isSelected.push(isSelected); 
        console.log(isSelected+" "+$scope.isSelected); 
         } 
       <div class="row>" 
       <div ng-repeat="out in outs track by $index" > 
        <a href="" 
        ng-class="getClass($index)">{{out.label}}</a></div></div> 
        <!-- </div> --> 
       </div> 

       <div ng-repeat="out in outs track by $index" > 
       <div ng-if="out_index== $index"> 
       <div>{{out.label}}</div> 
       <div class="col-md-8"> 
                <!-- <div class="jumbotron vcenter"> --> 
                <ul class="list-group" ng-repeat="inner in out.inners | orderBy: 'id' " > 
                 <li class="list-group-item cursorPointer"> 
                  <img src="{{inner.location}}" alt="{{inner.description}}" title="{{inner.description}}" ng-dblclick="setData($parent.$index)"/> 
                  <div><font >{{inner.description}}</font></div> 
                  </li></ul> 
                 </div>                 
                <!-- </div> --> 
               </div> 
              </div>  

$scope.isSelected = []; 
$scope.getClass = function(ind){ 
    for(var i=0;i<$scope.isSelected.length;i++){ 
    console.log("Length "+$scope.isSelected.length+" Scope >>"+$scope.isSelected[i]+" Index "+ind); 
    if($scope.isSelected[i] ==ind){ 
     return "selected"; 
    } else{ 
     return ""; 
    } 
    } 
} 
+0

さて、あなたは今まで一度 'isSelected'を繰り返す - 条件は、あなたが空の文字列を返すことに失敗した場合... – tymeJV

+0

質問は何ですか? – charlietfl

+0

$ parent。$ indexを使ってすべての内部ng-repeatを選択すると、外側のng-repeatが強調表示されます。だから私は値を保持し、外側のすべての値をハイライト表示しようとする配列を使用しています。 – user3428736

答えて

0
if($scope.isSelected.indexOf(ind) !== -1){ 
     return "selected"; 
    } else{ 
     return ""; 
    } 

、私はスコープに値をプッシュしようとしていますインナーNG-繰り返しをクリックすると 私が強調した値に色を追加する必要があると私は複数の値(値のすなわち配列)を使用していますそれは私のために働く

0

Forループは、最初の反復で終了しています。ループの後にelsereturn ""を削除します。

$scope.getClass = function (ind) { 
    for (var i = 0; i < $scope.isSelected.length; i++) { 
      if ($scope.isSelected[i] == ind) { 
       return "selected"; 
      } 
     } 
     return ""; 
} 
+0

ありがとうございます。私はindexOfを使用してチェックしましたが、配列の既存の値をチェックするためにindexOfを使用するのはいいですか?私はangularjsには新しく、案内してください。 – user3428736

+0

indexOfは配列に値/オブジェクトが含まれているかどうかをチェックする別のオプションです。 IndexOfは反復よりも良い方法です。 – Prem

関連する問題