Directive that wraps nolimits4web/swiper library for AngularJS. License: Apache
bower install angular-swiper
npm install -g gulp
npm install
bower install
Add <script>
s to your html
files for angular and angular-swiper:
<script src="../bower_components/swiper/dist/js/swiper.js"></script>
<script src="../bower_components/angular/angular.js"></script>
<script src="../dist/angular-swiper.js"></script>
And add ksSwiper
as a dependency for your app:
angular.module('myApp', ['ksSwiper', ...]);
Example:
<ks-swiper-container initial-slide="3" loop="false" show-nav-buttons="false" slides-per-view="4" space-between="5" pagination-clickable="false">
<ks-swiper-slide class="swiper-slide" ng-repeat="s in [1,2,3,4,5,6,7,8,9,10,11,12,13,14]">
<img ng-src="https://api.randomuser.me/portraits/thumb/men/{{s}}.jpg">
</ks-swiper-slide>
</ks-swiper-container>
If no attributes are given, an object with the following values will be used to initiate the swiper. It is possible to use the directive without specifying attributes.
// directive defaults
var params = {
slidesPerView: $scope.slidesPerView || 1,
slidesPerColumn: $scope.slidesPerColumn || 1,
spaceBetween: $scope.spaceBetween || 0,
direction: $scope.direction || 'horizontal',
loop: $scope.loop || false,
initialSlide: $scope.initialSlide || 0,
showNavButtons: false
};
The following attributes can be used with this directive. Please see the Swiper API Documentation for more information about the type and description of parameters.
<ks-swiper-container
slides-per-view="3"
slides-per-column="1"
space-between="0"
pagination-is-active="true"
pagination-clickable="false"
show-nav-buttons="false"
loop="false"
autoplay="5000"
initial-slide="0"
direction="horizontal">
...
</ks-swiper-container>
This allows you to pass a javascript object that will override any swiper parameter from the Swiper API Documentation that is used initialize swiper.
Example:
<ks-swiper-container override-parameters="{'effect':'cube'}">
<ks-swiper-slide class="swiper-slide" ng-repeat="s in [1,2,3,4,5,6,7,8,9,10,11,12,13,14]">
<img ng-src="https://api.randomuser.me/portraits/thumb/men/{{s}}.jpg">
</ks-swiper-slide>
</ks-swiper-container>
In some situations it might be useful to access the actual swiper instance. Passing the parent scope will linked it to the model in the directive's isolated scope which is used for the swiper instance.
It can also be used to slideTo(index, speed, runCallbacks), slidePrev(runCallbacks, speed), slideNext(runCallbacks, speed) or for callback functions.
Example Template:
<div ng-controller="TestCtrl">
<ks-swiper-container swiper="swiper">
<ks-swiper-slide class="swiper-slide" ng-repeat="s in [1,2,3,4,5,6,7,8,9,10,11,12,13,14]">
<img ng-src="https://api.randomuser.me/portraits/thumb/men/{{s}}.jpg">
</ks-swiper-slide>
</ks-swiper-container>
</div>
Example Controller
angular.module('swiperApp')
.controller('TestCtrl', function($scope){
$scope.swiper = {};
$scope.next = function(){
$scope.swiper.slideNext();
};
});
In some situations, like when you wanna listen to swiper events, is useful to know when the swiper object is created (that occurs after all slides are created).
For that purpose is available the on-ready attribute. You can specify a function to be called when the swiper object is created. In the function you can manipulate the swiperobject, and for example, bind an event. The function must has a paramteter called swiper, refering to swiper object.
Example template
<div ng-controller="TestCtrl">
<ks-swiper-container swiper="swiper" on-ready="onReadySwiper(swiper)">
<ks-swiper-slide class="swiper-slide" ng-repeat="s in [1,2,3,4,5,6,7,8,9,10,11,12,13,14]">
<img ng-src="https://api.randomuser.me/portraits/thumb/men/{{s}}.jpg">
</ks-swiper-slide>
</ks-swiper-container>
</div>
Example Controller
angular.module('swiperApp')
.controller('TestCtrl', function($scope){
$scope.swiper = {};
$scope.onReadySwiper = function (swiper) {
swiper.on('slideChangeStart', function () {
console.log('slideChangeStart');
});
};
});