diff --git a/js/angular/directive/ngClick.js b/js/angular/directive/ngClick.js index c84f66880f..756134ac85 100644 --- a/js/angular/directive/ngClick.js +++ b/js/angular/directive/ngClick.js @@ -1,8 +1,38 @@ -// Similar to Angular's ngTouch, however it uses Ionic's tap detection -// and click simulation. ngClick - IonicModule +.config(['$provide', function($provide) { + $provide.decorator('ngClickDirective', ['$delegate', function($delegate) { + // drop the default ngClick directive + $delegate.shift(); + return $delegate; + }]); +}]) + +/** + * @private + */ +.factory('$ionicNgClick', ['$parse', function($parse) { + return function(scope, element, clickExpr) { + var clickHandler = $parse(clickExpr); + + element.on('click', function(event) { + scope.$apply(function() { + clickHandler(scope, {$event: (event)}); + }); + }); + + // Hack for iOS Safari's benefit. It goes searching for onclick handlers and is liable to click + // something else nearby. + element.onclick = function(event) { }; + }; +}]) + +.directive('ngClick', ['$ionicNgClick', function($ionicNgClick) { + return function(scope, element, attr) { + $ionicNgClick(scope, element, attr.ngClick); + }; +}]) + .directive('ionStopEvent', function () { function stopEvent(e) { e.stopPropagation(); diff --git a/test/html/clickTests.html b/test/html/clickTests.html index 45181af31b..c3e5f4bd3d 100644 --- a/test/html/clickTests.html +++ b/test/html/clickTests.html @@ -68,7 +68,7 @@ ng-model="radioModel.data" ng-value="'Radio B'">Radio B - + - +