Skip to content

Commit d6c960c

Browse files
committed
feat(ionSlideBox): add pager-click attribute
Fixes #785
1 parent 79f6b25 commit d6c960c

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

Diff for: js/ext/angular/src/directive/ionicSlideBox.js

+15-4
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,9 @@ angular.module('ionic.ui.slideBox', [])
134134
* @param {boolean=} does-continue Whether the slide box should automatically slide.
135135
* @param {number=} slide-interval How many milliseconds to wait to change slides (if does-continue is true). Defaults to 4000.
136136
* @param {boolean=} show-pager Whether a pager should be shown for this slide box.
137+
* @param {expression=} pager-click Expression to call when a pager is clicked (if show-pager is true). Is passed the 'index' variable.
137138
* @param {boolean=} disable-scroll Whether to disallow scrolling/dragging of the slide-box content.
138-
* @param {expression=} on-slide-changed Expression called whenever the slide is changed.
139+
* @param {expression=} on-slide-changed Expression called whenever the slide is changed. Is passed an 'index' variable.
139140
* @param {expression=} active-slide Model to bind the current slide to.
140141
*/
141142
.directive('ionSlideBox', [
@@ -151,6 +152,7 @@ function($timeout, $compile, $ionicSlideBoxDelegate) {
151152
doesContinue: '@',
152153
slideInterval: '@',
153154
showPager: '@',
155+
pagerClick: '&',
154156
disableScroll: '@',
155157
onSlideChanged: '&',
156158
activeSlide: '=?'
@@ -205,13 +207,17 @@ function($timeout, $compile, $ionicSlideBoxDelegate) {
205207
this.__slider = slider;
206208

207209
var deregisterInstance = $ionicSlideBoxDelegate._registerInstance(slider, $attrs.delegateHandle);
208-
209210
$scope.$on('$destroy', deregisterInstance);
210211

211212
this.slidesCount = function() {
212213
return slider.slidesCount();
213214
};
214215

216+
this.onPagerClick = function(index) {
217+
console.log('pagerClick', index);
218+
$scope.pagerClick({index: index});
219+
};
220+
215221
$timeout(function() {
216222
slider.load();
217223
});
@@ -239,7 +245,8 @@ function($timeout, $compile, $ionicSlideBoxDelegate) {
239245
require: '^ionSlideBox',
240246
compile: function(element, attr) {
241247
element.addClass('slider-slide');
242-
return function($scope, $element, $attr) {};
248+
return function($scope, $element, $attr) {
249+
};
243250
},
244251
};
245252
})
@@ -249,7 +256,7 @@ function($timeout, $compile, $ionicSlideBoxDelegate) {
249256
restrict: 'E',
250257
replace: true,
251258
require: '^ionSlideBox',
252-
template: '<div class="slider-pager"><span class="slider-pager-page" ng-repeat="slide in numSlides() track by $index" ng-class="{active: $index == currentSlide}"><i class="icon ion-record"></i></span></div>',
259+
template: '<div class="slider-pager"><span class="slider-pager-page" ng-repeat="slide in numSlides() track by $index" ng-class="{active: $index == currentSlide}" ng-click="pagerClick($index)"><i class="icon ion-record"></i></span></div>',
253260
link: function($scope, $element, $attr, slideBox) {
254261
var selectPage = function(index) {
255262
var children = $element[0].children;
@@ -263,6 +270,10 @@ function($timeout, $compile, $ionicSlideBoxDelegate) {
263270
}
264271
};
265272

273+
$scope.pagerClick = function(index) {
274+
slideBox.onPagerClick(index);
275+
};
276+
266277
$scope.numSlides = function() {
267278
return new Array(slideBox.slidesCount());
268279
};

Diff for: js/ext/angular/test/slideBox.html

+4-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
<ion-side-menus>
4747
<ion-side-menu-content>
4848
<ion-header-bar left-buttons="leftButtons" right-buttons="rightButtons" title=""></ion-header-bar>
49-
<ion-slide-box on-slide-changed="slideChanged(index)">
49+
<ion-slide-box on-slide-changed="slideChanged(index)" show-pager="true" pager-click="pagerClick(index)">
5050
<ion-slide ng-controller="FirstSlideCtrl">
5151
<h3>Thank you for choosing the Awesome App!</h3>
5252
<div id="logo">
@@ -133,6 +133,9 @@ <h1 class="title">Right</h1>
133133
$scope.leftButtons = leftButtons;
134134
$scope.rightButtons = rightButtons;
135135

136+
$scope.pagerClick = function(index) {
137+
alert('pagerClick ' + index);
138+
};
136139

137140
$scope.slideChanged = function(index) {
138141
console.log('Slide changed', index);

0 commit comments

Comments
 (0)