Angular 使用 IOS 8.3 的 Safari 上的 ng-click 问题

Angular ng-click issues on Safari with IOS 8.3

这是一个奇怪的问题,很难生成和探索。

在使用 Angular 构建网络应用程序时,我的老板发现应用程序上所有使用 ng-click 指令的按钮都不起作用。

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

我可以说当在 iPhone5(所有版本)、iPhone 6(IOS 9)、Safari windows 和所有其他浏览器(移动和桌面),ng-click 很有魅力。

正在使用 Angular 1.4.3 构建应用程序。

这是按钮的代码,如您所见,没有什么特别之处:

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

在控制器中:

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



我尝试了此处建议的许多更改,包括 ng-touchng-bind,如下所示构建我自己的点击指令:

.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();
                });
            };
        }
    };
});

找不到任何合适的问题解决方案。

谢谢。

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

使用"touchstart click"可能会解决这个问题。

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: 部分。 在此过程中的某个时刻,该函数会将一些数据保存到浏览器本地存储中。

我的老板在 safari 上使用隐私浏览,显然在 safari 上使用隐私浏览时,浏览器不会在本地存储上保存数据,它会抛出异常并终止代码。

好的,谢谢。