fix(slideBox): if selected binding is string, parse to integer

This commit is contained in:
Andrew
2014-12-04 13:28:41 -07:00
parent e44c2b5228
commit ee1d5d9ce8
2 changed files with 20 additions and 0 deletions

View File

@@ -178,6 +178,8 @@ function(scope, element, $log, $document, $$q, $timeout, $interval, $$ionicAttac
// adds data to the queue for selection.
// Index can be either a number or a getter (to be called when starting the slide)
function select(newIndex, transitionDuration, isDrag) {
newIndex = parseInt(newIndex);
if (isNaN(newIndex) || newIndex < 0) return;
slideQueue.unshift([
angular.isFunction(newIndex) ? newIndex : function() { return newIndex; },
transitionDuration || SLIDE_TRANSITION_DURATION,

View File

@@ -340,6 +340,24 @@ describe('ionSlideBox', function() {
expect(slideDisplays(el)).toEqual(['selected', 'next', 'previous']);
}));
it('strings and negative numbers', inject(function($timeout, $rootScope) {
var el = setup();
$timeout.flush();
// Do nothing for -1
$del.select(-1);
$timeout.verifyNoPendingTasks();
// Do nothing for NaN
$del.select(NaN);
$timeout.verifyNoPendingTasks();
// parse to int
$del.select('1');
$timeout.flush();
expect($del.selected()).toBe(1);
}));
it('when queueing, should only publish after final slide', inject(function($timeout, $rootScope) {
$rootScope.changed = jasmine.createSpy('changed');
$rootScope.start = jasmine.createSpy('start');