From 04c4900c93b1a68c2788a50e5837d6b60e6daad5 Mon Sep 17 00:00:00 2001 From: Max Lynch Date: Tue, 19 Nov 2013 19:43:12 -0600 Subject: [PATCH] Fixed tap performance using polyfill --- dist/js/ionic-angular.js | 18 +++++++++--------- dist/js/ionic.js | 16 ++++++++-------- js/ext/angular/src/directive/ionicNavRouter.js | 10 +++++----- js/ext/angular/src/directive/ionicSideMenu.js | 8 ++++---- js/utils/poly.js | 16 ++++++++-------- 5 files changed, 34 insertions(+), 34 deletions(-) diff --git a/dist/js/ionic-angular.js b/dist/js/ionic-angular.js index 071898bc09..67df62bc38 100644 --- a/dist/js/ionic-angular.js +++ b/dist/js/ionic-angular.js @@ -25296,7 +25296,7 @@ angular.module('ionic.ui.nav', ['ionic.service.templateLoad', 'ionic.service.ges var actualLocation = null; -angular.module('ionic.ui.navRouter', []) +angular.module('ionic.ui.navRouter', ['ionic.service.gesture']) .run(['$rootScope', function($rootScope) { $rootScope.stackCursorPosition = 0; @@ -25620,22 +25620,22 @@ angular.module('ionic.ui.navRouter', []) } }]) -.directive('navBack', ['$window', '$rootScope', function($window, $rootScope) { +.directive('navBack', ['$window', '$rootScope', 'Gesture', function($window, $rootScope, Gesture) { return { restrict: 'AC', require: '^?navRouter', link: function($scope, $element, $attr, navCtrl) { - var goBack = function() { + var goBack = function(e) { // Only trigger back if the stack is greater than zero if($rootScope.stackCursorPosition > 0) { $window.history.back(); } }; - $element.bind('tap', goBack); + var tapGesture = Gesture.on('tap', goBack, $element); $element.bind('click', goBack); $scope.$on('$destroy', function() { - $element.unbind('tap', goBack); + Gesture.off(tapGesture, 'tap', goBack); $element.unbind('click', goBack); }); } @@ -25782,7 +25782,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture']) sideMenuCtrl._handleDrag(e); }; - Gesture.on('drag', dragFn, $element); + var dragGesture = Gesture.on('drag', dragFn, $element); var dragReleaseFn = function(e) { if(!defaultPrevented) { @@ -25791,7 +25791,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture']) defaultPrevented = false; }; - Gesture.on('release', dragReleaseFn, $element); + var releaseGesture = Gesture.on('release', dragReleaseFn, $element); sideMenuCtrl.setContent({ onDrag: function(e) {}, @@ -25817,8 +25817,8 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture']) // Cleanup $scope.$on('$destroy', function() { - Gesture.off('drag', dragFn); - Gesture.off('release', dragReleaseFn); + Gesture.off(dragGesture, 'drag', dragFn); + Gesture.off(releaseGesture, 'release', dragReleaseFn); }); }; } diff --git a/dist/js/ionic.js b/dist/js/ionic.js index 6cf94eb07a..295625cd53 100644 --- a/dist/js/ionic.js +++ b/dist/js/ionic.js @@ -1800,15 +1800,15 @@ window.ionic = { if(ele.control) { return inputTapPolyfill(ele.control, e); } + } else if( ele.tagName === "A" ) { + var href = ele.getAttribute('href'); + if(href) { + ele.click(); + e.stopPropagation(); + e.preventDefault(); + return false; + } } - /* Let ng-click handle this - else if( ele.tagName === "A" || ele.tagName === "BUTTON" ) { - ele.click(); - e.stopPropagation(); - e.preventDefault(); - return false; - } - */ ele = ele.parentElement; } diff --git a/js/ext/angular/src/directive/ionicNavRouter.js b/js/ext/angular/src/directive/ionicNavRouter.js index 14a898257c..7ffa4e136e 100644 --- a/js/ext/angular/src/directive/ionicNavRouter.js +++ b/js/ext/angular/src/directive/ionicNavRouter.js @@ -19,7 +19,7 @@ var actualLocation = null; -angular.module('ionic.ui.navRouter', []) +angular.module('ionic.ui.navRouter', ['ionic.service.gesture']) .run(['$rootScope', function($rootScope) { $rootScope.stackCursorPosition = 0; @@ -343,22 +343,22 @@ angular.module('ionic.ui.navRouter', []) } }]) -.directive('navBack', ['$window', '$rootScope', function($window, $rootScope) { +.directive('navBack', ['$window', '$rootScope', 'Gesture', function($window, $rootScope, Gesture) { return { restrict: 'AC', require: '^?navRouter', link: function($scope, $element, $attr, navCtrl) { - var goBack = function() { + var goBack = function(e) { // Only trigger back if the stack is greater than zero if($rootScope.stackCursorPosition > 0) { $window.history.back(); } }; - $element.bind('tap', goBack); + var tapGesture = Gesture.on('tap', goBack, $element); $element.bind('click', goBack); $scope.$on('$destroy', function() { - $element.unbind('tap', goBack); + Gesture.off(tapGesture, 'tap', goBack); $element.unbind('click', goBack); }); } diff --git a/js/ext/angular/src/directive/ionicSideMenu.js b/js/ext/angular/src/directive/ionicSideMenu.js index aeebdcc965..56bb3b22f6 100644 --- a/js/ext/angular/src/directive/ionicSideMenu.js +++ b/js/ext/angular/src/directive/ionicSideMenu.js @@ -70,7 +70,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture']) sideMenuCtrl._handleDrag(e); }; - Gesture.on('drag', dragFn, $element); + var dragGesture = Gesture.on('drag', dragFn, $element); var dragReleaseFn = function(e) { if(!defaultPrevented) { @@ -79,7 +79,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture']) defaultPrevented = false; }; - Gesture.on('release', dragReleaseFn, $element); + var releaseGesture = Gesture.on('release', dragReleaseFn, $element); sideMenuCtrl.setContent({ onDrag: function(e) {}, @@ -105,8 +105,8 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture']) // Cleanup $scope.$on('$destroy', function() { - Gesture.off('drag', dragFn); - Gesture.off('release', dragReleaseFn); + Gesture.off(dragGesture, 'drag', dragFn); + Gesture.off(releaseGesture, 'release', dragReleaseFn); }); }; } diff --git a/js/utils/poly.js b/js/utils/poly.js index 9b2461b714..5c9933e19a 100644 --- a/js/utils/poly.js +++ b/js/utils/poly.js @@ -66,15 +66,15 @@ if(ele.control) { return inputTapPolyfill(ele.control, e); } + } else if( ele.tagName === "A" ) { + var href = ele.getAttribute('href'); + if(href) { + ele.click(); + e.stopPropagation(); + e.preventDefault(); + return false; + } } - /* Let ng-click handle this - else if( ele.tagName === "A" || ele.tagName === "BUTTON" ) { - ele.click(); - e.stopPropagation(); - e.preventDefault(); - return false; - } - */ ele = ele.parentElement; }