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-touch
、ng-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 上使用隐私浏览时,浏览器不会在本地存储上保存数据,它会抛出异常并终止代码。
好的,谢谢。
这是一个奇怪的问题,很难生成和探索。
在使用 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-touch
、ng-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 上使用隐私浏览时,浏览器不会在本地存储上保存数据,它会抛出异常并终止代码。
好的,谢谢。