From fc673bf28702cb08341d4e3b6e0c994763f69312 Mon Sep 17 00:00:00 2001 From: yukozlovskiy Date: Tue, 20 Dec 2016 12:04:44 +0200 Subject: [PATCH 1/2] Bug - $on('$destroy') The issue was solved when two or more carousels exist on one page, and one of them was destroyed --- angular-carousel.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/angular-carousel.js b/angular-carousel.js index 6dbc9b5..011f5d3 100644 --- a/angular-carousel.js +++ b/angular-carousel.js @@ -151,7 +151,7 @@ angular.module('angular-carousel', []) // This directive makes an element with class 'ng-carousel' interactive // using own UI logic and HammerJS // -.directive('ngCarousel', ['Carousel', '$compile', '$document', '$timeout', function(Carousel, $compile, $document, $timeout) { +.directive('ngCarousel', ['Carousel', '$timeout', function(Carousel, $timeout) { function isTouchDevice() { return 'ontouchstart' in document.documentElement; } @@ -373,8 +373,8 @@ angular.module('angular-carousel', []) // On release var pressEvent = isTouchDevice() ? 'touchstart' : 'mousedown'; var releaseEvent = isTouchDevice() ? 'touchend' : 'mouseup'; - $document.on(pressEvent, carouselPress); - $document.on(releaseEvent, carouselRelease); + element.on(pressEvent, carouselPress); + element.on(releaseEvent, carouselRelease); // element.on('mouseover', function() { @@ -397,8 +397,8 @@ angular.module('angular-carousel', []) scope.$on('$destroy', function() { $timeout.cancel(refreshInteractionWithDomTimer); element.off('mouseover mouseout'); - $document.off(pressEvent); - $document.off(releaseEvent); + element.off(pressEvent); + element.off(releaseEvent); slideContainer.off('transitionend oTransitionEnd webkitTransitionEnd'); currentCarousel.onSlideChangeCallbacks = []; Carousel.remove(name); From 26dbb32c964c2bb785ff15fc4fc60007fd71b295 Mon Sep 17 00:00:00 2001 From: yukozlovskiy Date: Tue, 20 Dec 2016 12:16:14 +0200 Subject: [PATCH 2/2] Fixed global events --- angular-carousel.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/angular-carousel.js b/angular-carousel.js index 011f5d3..153387f 100644 --- a/angular-carousel.js +++ b/angular-carousel.js @@ -397,8 +397,8 @@ angular.module('angular-carousel', []) scope.$on('$destroy', function() { $timeout.cancel(refreshInteractionWithDomTimer); element.off('mouseover mouseout'); - element.off(pressEvent); - element.off(releaseEvent); + element.off(pressEvent, carouselPress); + element.off(releaseEvent, carouselRelease); slideContainer.off('transitionend oTransitionEnd webkitTransitionEnd'); currentCarousel.onSlideChangeCallbacks = []; Carousel.remove(name);