From 68ddbdb43943d4de2b983c75b9a868b09935bb5f Mon Sep 17 00:00:00 2001 From: Andy Joslin Date: Mon, 10 Mar 2014 20:15:57 -0600 Subject: [PATCH] docs(ionSlideView): add configurable model --- js/ext/angular/src/directive/ionicSlideBox.js | 5 +++-- .../src/service/delegates/ionicSlideBoxDelegate.js | 2 +- .../angular/test/directive/ionicSlideBox.unit.js | 14 +++++++++++--- js/views/sliderView.js | 4 ++-- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/js/ext/angular/src/directive/ionicSlideBox.js b/js/ext/angular/src/directive/ionicSlideBox.js index cf1c5fa2ff..80ff28bc98 100644 --- a/js/ext/angular/src/directive/ionicSlideBox.js +++ b/js/ext/angular/src/directive/ionicSlideBox.js @@ -32,6 +32,7 @@ angular.module('ionic.ui.slideBox', []) * * ``` * + * @param {expression=} model The model to assign this slide box container's {@link ionic.controller:ionicSlideBox ionicSlideBox} controller to. By default, assigns to $scope.slideBoxController. * @param {boolean=} does-continue Whether the slide box should automatically slide. * @param {number=} slide-interval How many milliseconds to wait to change slides (if does-continue is true). Defaults to 4000. * @param {boolean=} show-pager Whether a pager should be shown for this slide box. @@ -52,7 +53,7 @@ angular.module('ionic.ui.slideBox', []) onSlideChanged: '&', activeSlide: '=?' }, - controller: ['$scope', '$element', function($scope, $element) { + controller: ['$scope', '$element', '$attrs', '$parse', function($scope, $element, $attrs, $parse) { var _this = this; var continuous = $scope.$eval($scope.doesContinue) === true; @@ -98,7 +99,7 @@ angular.module('ionic.ui.slideBox', []) slider.slide(index); }); - $scope.$parent.slideBox = slider; + $parse($attrs.model || 'slideBoxController').assign($scope.$parent, slider); $ionicSlideBoxDelegate.register($scope, $element); diff --git a/js/ext/angular/src/service/delegates/ionicSlideBoxDelegate.js b/js/ext/angular/src/service/delegates/ionicSlideBoxDelegate.js index f6b6d7edfe..849638dc9f 100644 --- a/js/ext/angular/src/service/delegates/ionicSlideBoxDelegate.js +++ b/js/ext/angular/src/service/delegates/ionicSlideBoxDelegate.js @@ -18,7 +18,7 @@ angular.module('ionic.ui.service.slideBoxDelegate', []) return; } $timeout(function() { - $scope.$parent.slideBox.setup(); + $scope.$parent.slideBoxController.setup(); }); e.preventDefault(); }); diff --git a/js/ext/angular/test/directive/ionicSlideBox.unit.js b/js/ext/angular/test/directive/ionicSlideBox.unit.js index 33a5208ae2..e26fa52372 100644 --- a/js/ext/angular/test/directive/ionicSlideBox.unit.js +++ b/js/ext/angular/test/directive/ionicSlideBox.unit.js @@ -32,12 +32,20 @@ describe('Ionic Angular Slide Box', function() { it('Should init', function() { var scope = el.scope(); - expect(scope.slideBox).not.toBe(undefined); + expect(scope.slideBoxController).toBeDefined() + expect(scope.slideBoxController.slide).toBeDefined(); }); + it('Should init with custom model attr', inject(function($compile, $rootScope) { + var el = $compile('')($rootScope); + var scope = el.scope(); + expect(scope.myModel).toBeDefined(); + expect(scope.myModel.slide).toBeDefined(); + })); + it('Should update with delegate', function() { var scope = el.scope(); - var slideBox = scope.slideBox; + var slideBox = scope.slideBoxController; spyOn(slideBox, 'setup'); delegate.update(); timeout.flush(); @@ -62,6 +70,6 @@ describe('Ionic Angular Slide Box', function() { ')(rootScope); var scope = el.scope(); - expect(scope.slideBox.currentIndex()).toBe(2); + expect(scope.slideBoxController.currentIndex()).toBe(2); }); }); diff --git a/js/views/sliderView.js b/js/views/sliderView.js index 259b1f175e..472139ae07 100644 --- a/js/views/sliderView.js +++ b/js/views/sliderView.js @@ -524,7 +524,7 @@ ionic.views.Slider = ionic.views.View.inherit({ /** * @ngdoc method * @name ionicSlideBox#currentIndex - * @returns {number} index The index of the current slide. + * @returns number The index of the current slide. */ this.currentIndex = function() { // return current index position @@ -534,7 +534,7 @@ ionic.views.Slider = ionic.views.View.inherit({ /** * @ngdoc method * @name ionicSlideBox#slidesCount - * @returns {number} count The number of slides there are currently. + * @returns number The number of slides there are currently. */ this.slidesCount = function() { // return total number of slides