Angularjs 如何防止在if条件下调用state.go时执行控制器?

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

我正在尝试检查控制器中的条件并重定向到其他状态。但是调用State.go之后的代码也在执行。我要处理的问题是,当我使用F5刷新页面时,会触发beforeunload事件,并提示用户在“离开此页面”和“留在此页面”之间进行选择。如果我选择“停留在这一页”,它会保持原样,看起来很好。但如果我选择“离开此页面”,它会尝试重新加载页面,因此在丢失一些数据时,我会尝试重定向到其他状态

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块:


非常感谢你。回报很好,非常感谢。回报是非常整洁的工作。