I am struggling with an AngularJS problem. I have two HTML blocks in a ng-repeat and wants to show one of them on each step.
<div class="col-md-3" style="margin-top:80px" ng-init="checkFunction()">
<div id="left_group_stage">
<ul class="list-group" ng-if="started">
<li class="list-group-item"> {{group_leaders[$index]}}</li>
<li class="list-group-item"> {{group_runners[$index+1]}}</li>
</ul>
<ul class="list-group" ng-if="!started">
<li class="list-group-item"> {{group_leaders[$index]}}</li>
<li class="list-group-item"> {{group_runners[$index-1]}}</li>
</ul>
</div>
</div>
These are my HTML elements.
I am calling checkFunction method each time to change my started value in every step.
And my function in controller is this.
$scope.started=true;
$scope.checkFunction=function(){
$scope.started = !$scope.started;
console.log($scope.started);
}
$scope.started value changes with every step I can see it in console but ng-if always takes true value.
I tried $scope.$apply() method for forcing view update in $timeout but that didn't help too. Everything works normal expect this part.
Working Demo : https://plnkr.co/edit/lVSnbj?p=preview
1 Answer 1
How about
<div class="col-md-3" style="margin-top: 80px"
ng-init="checkFunction()">
<div id="left_group_stage">
<ul class="list-group" ng-if="($index%2 === 0)">
<li class="list-group-item">List 1</li>
<li class="list-group-item">{{group_leaders[$index]}}</li>
<li class="list-group-item">{{group_runners[$index+1]}}</li>
</ul>
<ul class="list-group" ng-if="($index%2 !== 0)">
<li class="list-group-item">list 2</li>
<li class="list-group-item">{{group_leaders[$index]}}</li>
<li class="list-group-item">{{group_runners[$index-1]}}</li>
</ul>
</div>
</div>
You can achieve the same behavior using odd and even check this plunkr
odd: ng-if="($index%2 !== 0)"
even : ng-if="($index%2 === 0)"
so it occurs alternatively.
<div id="left_group_stage" ng-if="started">and then anotherng-Ifinside thediv. Makes no sense. relook into your code and better provide a plunkr$scope.startedvariable to all div. So, you get the value which has been assigned in the last iteration