2016-04-27 5 views
0

div要素にng-repeatを使用しています。 div要素内の画像にトグル機能があります。しかし、画像をクリックすると、関数がトリガされますが、すべてのdivに対して同じデータが表示されます。以下はコードです。AngularJS:ng-repeat内の画像にトグル機能を追加

HTML:

<div ng-repeat="item in items"> 
    <div> 
     <img src="img/icon1.png" class="pull-right" ng-click="showDiv(item.itemId,$index)"> 
    </div> 
    <div ng-show="hiddenDiv[$index]"> 
     <div ng-repeat="student in studentData"> 
      <div class="row"> 
       <div> 
        <div>{{student.name}}</div> 
        <div>{{student.adress}}</div> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

JS:

$scope.hiddenDiv=[]; 
$scope.showDiv=function(itemId,index) { 
    $scope.hiddenDiv[index] = !$scope.hiddenDiv[index]; 
    var myResult = ListService.getList(url here); 
    myResult.then(function (data) { 
     if(data && data.list) 
      $scope.studentData = data.list; 
    }); 
} 

ここで、IはNGリピート内のすべてのdiv内の同じスコープ変数を使用しています。

更新回答:

JS:

$scope.studentData = []; 
$scope.studentData[index] = data.list; 

はHTML:

答えて

1

あなたは、すべてのアイテムの一意の学生を持っているしたい場合は、必要にこのようなことをする:

<div ng-repeat="item in items"> 
    <div> 
     <img src="img/icon1.png" class="pull-right" ng-click="showDiv(item.itemId,$index)"> 
    </div> 
    <div ng-show="hiddenDiv[$index]"> 
     <div ng-repeat="student in item.studentData"> 
      <div class="row"> 
       <div> 
        <div>{{student.name}}</div> 
        <div>{{student.adress}}</div> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

とJS:

$scope.hiddenDiv=[]; 
$scope.showDiv=function(itemId,index) { 
    $scope.hiddenDiv[index] = !$scope.hiddenDiv[index]; 
    var myResult = ListService.getList(url here); 
    myResult.then(function (data) { 
     if(data && data.list) 
      $scope.items[index].studentData = data.list; 
    }); 
} 

またはhiddenDiv

$scope.hiddenDiv=[]; 
$scope.studentData = []; 
$scope.showDiv=function(itemId,index) { 
    $scope.hiddenDiv[index] = !$scope.hiddenDiv[index]; 
    var myResult = ListService.getList(url here); 
    myResult.then(function (data) { 
     if(data && data.list) 
      $scope.studentData[index].studentData = data.list; 
    }); 
} 

とhtmlと同じ使用します。迅速な応答を

<div ng-repeat="student in studentData[$index]"> 
+0

感謝。私は試しましたが、** TypeError:未定義**のプロパティ '2'を読み込めません。私が画像をクリックすると。 – NNR

+0

'$ scope.items'が定義されていますか? – jcubic

+0

ありがとうございます。私の答えを更新しました。 – NNR

関連する問題