Search code examples
jqueryangularjsangularjs-ng-repeatangularjs-ng-click

Multiple Ng-REPEAT in a page


I have the following codes on my index.html page.

<button id="showdogs">Dogs</button>
<div ng-repeat="list in cats">
<li>{{list.name}}</li>
</div>

<script>
$scope.cats = [
        {name:"cat1"},{name:"cat2"},{name:"cat3"}]
$scope.dogs = [
        {name:"Dog1"},{name:"Dog2"},{name:"Dog3"}]
</script?

I want to show

<div ng-repeat="dog in dogs">
<li>{{list.name}}</li>
</div>

when #showdogs button is pressed. Can anyone help me to do this using AngularJs or Jquery?


Solution

  • AngularJS:

    You can use ng-show as follows and display list:

    function Controller($scope) {
       $scope.displayCats = true;
       $scope.displayDogs = false;
        $scope.cats = [{name:"cat1"},{name:"cat2"},{name:"cat3"}];
    		$scope.dogs = [{name:"Dog1"},{name:"Dog2"},{name:"Dog3"}];
        
        $scope.showDogs = function(){
        	$scope.displayDogs = true;
          $scope.displayCats = false;
        };
        
        $scope.showCats = function(){
        	$scope.displayDogs = false;
          $scope.displayCats = true;
        };
    }
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js"></script>
    <div ng-app ng-controller="Controller">
        <button id="showdogs"  ng-click="showDogs();">Dogs</button>
        <button id="showcats"  ng-click="showCats();">Cats</button>
        <div ng-show="displayCats" ng-repeat="list in cats">
        <li>{{list.name}}</li>
        </div>
        <div ng-show="displayDogs" ng-repeat="list in dogs">
        <li>{{list.name}}</li>
        </div>
    </div>

    jQuery:

    var cats = [{name:"cat1"},{name:"cat2"},{name:"cat3"}];
    var dogs = dogs = [{name:"Dog1"},{name:"Dog2"},{name:"Dog3"}];
    
    $(document).ready(function(){
    	$("#showdogs").click(function(){
       $(".listDiv > ul").empty();
      	$.each(dogs,function(ind){
          $(".listDiv > ul").append("<li>"+dogs[ind].name+"</li>");
        });
      });
      $("#showcats").click(function(){
      	$(".listDiv > ul").empty();
      	$.each(cats,function(ind){
          $(".listDiv > ul").append("<li>"+cats[ind].name+"</li>");
        });
      });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <button id="showdogs">Dogs</button>
    <button id="showcats">Cats</button>
    <div class="listDiv">
    <ul>
    
    </ul>
    </div>