Reputation: 2117
I am trying to create a self rotating image viewer in AngularJS. Sorry if the question seems stupid, but I can't figure it out the angularJS way. I know I can hack it there using jQuery, but I think it should doable in AngularJS alone.
The HTML:
<div ng-controller="rotatorController">
<div ng-switch on="pic" ng-animate=" 'animate' " id="rotator">
<div ng-switch-when="1"><img src="/home/1.jpg"></div>
<div ng-switch-when="2"><img src="/home/2.jpg"></div>
<div ng-switch-when="3"><img src="/home/3.jpg"></div>
</div>
<div style="position: absolute; top: 600px" id="indexbuttons">
<button ng-click="pic = '1';" class="button">1</button>
<button ng-click="pic = '2';" class="button">2</button>
<button ng-click="pic = '3';" class="button">3</button>
</div>
</div>
The CSS:
div#rotator {
margin: 0;
padding: 0;
border: 0;
position: absolute;
}
.animate-enter,
.animate-leave
{
-webkit-transition: 825ms cubic-bezier(0.455, 0.030, 0.515, 0.955) all;
-moz-transition: 825ms cubic-bezier(0.455, 0.030, 0.515, 0.955) all;
-ms-transition: 825ms cubic-bezier(0.455, 0.030, 0.515, 0.955) all;
-o-transition: 825ms cubic-bezier(0.455, 0.030, 0.515, 0.955) all;
transition: 825ms cubic-bezier(0.455, 0.030, 0.515, 0.955) all;
position: absolute;
}
.animate-enter {
left: 100%;
}
.animate-enter.animate-enter-active {
left: 0;
}
.animate-leave {
left: 0;
}
.animate-leave.animate-leave-active{
left: -100%;
}
How do I send click event to indexbuttons in angularJS? Or is there a better way to loop those pictures?
Plunker: http://plnkr.co/edit/QiYidN?p=catalogue
Thank you
Upvotes: 3
Views: 2889
Reputation: 11543
You have to add a loop in your controller.
app.controller('rotatorController', ['$scope', '$timeout', function($scope, $timeout) {
$scope.pic = 1;
var slideImage = function() {
var loop = $timeout(function changePic() {
if($scope.pic < 2){
$scope.pic++;
} else {
$scope.pic = 1;
}
loop = $timeout(changePic, 2000);
},2000);
}();
}])
Here is the plunker
Upvotes: 3