Angularjs 如何防止在if条件下调用state.go时执行控制器?
我正在尝试检查控制器中的条件并重定向到其他状态。但是调用State.go之后的代码也在执行。我要处理的问题是,当我使用F5刷新页面时,会触发beforeunload事件,并提示用户在“离开此页面”和“留在此页面”之间进行选择。如果我选择“停留在这一页”,它会保持原样,看起来很好。但如果我选择“离开此页面”,它会尝试重新加载页面,因此在丢失一些数据时,我会尝试重定向到其他状态Angularjs 如何防止在if条件下调用state.go时执行控制器?,angularjs,angularjs-scope,angular-ui-router,Angularjs,Angularjs Scope,Angular Ui Router,我正在尝试检查控制器中的条件并重定向到其他状态。但是调用State.go之后的代码也在执行。我要处理的问题是,当我使用F5刷新页面时,会触发beforeunload事件,并提示用户在“离开此页面”和“留在此页面”之间进行选择。如果我选择“停留在这一页”,它会保持原样,看起来很好。但如果我选择“离开此页面”,它会尝试重新加载页面,因此在丢失一些数据时,我会尝试重定向到其他状态 var windowElement = angular.element($window); windowEle
var windowElement = angular.element($window);
windowElement.on('beforeunload', function (event) {
console.log('refreshing the page');
var path = $location.path();
if (path == '/record' || path == '/recordcreated') {
event.preventDefault();
}
});
$scope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams, options) {
//Do not allow to go from record created page to record page.
if (fromState.name == 'recordcreated' && toState.name == 'record') {
event.preventDefault();
$state.go('home');
}
});
$scope.selectedRecord = service.GetSelectedRecord();
//Check if null and redirect to home state
if ($scope.selectedRecord == null)
{
$state.go('home', {}, { reload: true });
}
//Continuing to execute this line
$scope.Balance = service.GetBalance();
调用state.go后,如何使其停止执行上述行?感谢您的建议。实现此目的的两种方法: 将关键字return添加到希望代码停止执行的行:
return $state.go('home', {}, { reload: true });
或者,将if语句附加到else块:
实现这一目标的两种方法: 将关键字return添加到希望代码停止执行的行:
return $state.go('home', {}, { reload: true });
或者,将if语句附加到else块:
非常感谢你。回报很好,非常感谢。回报是非常整洁的工作。