使用IOS 8.3在Safari上的angular度单击问题

这是一个奇怪的问题,这是一些难以产生和探索的东西。

在使用Angular构buildWeb应用程序时,我的老板发现应用程序中使用ng-click指令的所有button都不起作用。

现在,这个问题只发生在iphone 6 with IOS 8.3 and using the safari browser

我可以说,当在iPhone5(所有版本),iPhone 6(IOS 9),Safari for Windows和所有其他浏览器(移动和桌面)上testing时, ng-click就像一个魅力。

该应用程序正在使用Angular 1.4.3构build。

这是button的代码,你可以看到,没有什么特别的:

 <button class="btn calculate-button" ng-click="onCalculate()">Calculate</button> 

而在控制器中:

 $scope.onCalculate = function () { //Do something... And then: $state.go('someplace'); }; 

我尝试了很多这里提到的改变,包括ng-touchng-bind ,构build我自己的click指令,如下所示:

 .directive('basicClick', function($parse, $rootScope) { return { compile: function(elem, attr) { var fn = $parse(attr.basicClick); return function(scope, elem) { elem.on('click', function(e) { fn(scope, {$event: e}); scope.$apply(); }); }; } }; }); 

找不到任何适当的解决scheme的问题。

谢谢。

IOS 8.4.1更新有一个已知的问题,它会停止ng-link和ng-click的工作。

使用“touchstart点击”可以解决这个问题。

 app.directive("ngMobileClick", [function () { return function (scope, elem, attrs) { elem.bind("touchstart click", function (e) { e.preventDefault(); e.stopPropagation(); scope.$apply(attrs["ngMobileClick"]); }); } }]) 

HTML调用: ng-mobile-click="onCalculate()"

我把它固定在最后。

问题出在//Do something... And then:function的一部分。 在某个程度上,该function将一些数据保存到浏览器本地存储。

我的老板在Safari浏览器上使用隐私浏览function,显然当在safari上使用隐私浏览function时,浏览器不会保存本地存储的数据,并抛出exception并杀死代码。

那么,谢谢任何方式。