我的角度应用程序的内容创建流程正在被机器人和浏览器物理按钮打破,这些按钮将用户带到他们来自的地方,而不是过程中的前一步骤。我尝试使用locationChangeStart以及其他一些类似的事件来修复它,但它们都被我的“继续”按钮和物理“后退”按钮触发。
有没有办法只在用户按下浏览器/安卓的后退按钮时触发事件,或者知道是否由后退按钮和应用程序的按钮触发了locationChangeStart?如果可能的话,我想避免添加jQuery,因为我们目前没有使用它。
答案 0 :(得分:0)
我放弃了尝试检测用户按下后退按钮并对其进行操作。相反,将其设为默认操作并更改按钮的行为方式。我检测用户何时按下其中一个按钮并根据它设置变量。
var navigating = false;
$scope.$on('$locationChangeStart', function(event) {
if($scope.global.application="new-ad" && !navigating){
event.preventDefault();
$scope.areYouSure = true;
}
});
$scope.nextStep = function() {
navigating = true;
$location.url('/step-two');
}
基本上,我们首先将变量设置为false,如果用户按下物理,它将显示警告用户他们将失去工作的提示。但是,如果用户使用我们的"继续"按钮,同时触发locationChange,它会将变量设置为true,让应用知道应用程序内触发的locationChange是什么,并允许它继续。