相关疑难解决方法(0)

如何在角度拦截器中预先形成重定向

大家好我对角度很新,我对拦截器中处理重定向的最佳方法有疑问.

我的应用程序中有某些页面,如果我选择了一个帐户,我应该只能访问这些页面.因此,如果未选择帐户,我希望用户登录的路线选择帐户.

以下是我失败的尝试:

    // within config

    $httpProvider.interceptors.push(function($q, $injector){
        return {
            'request': function(config) {
                var state = $injector.get('$state');

                if(state.is('user.list')) {
                    var accountService = $injector.get('AccountService');
                    if(!accountService.accountSelected()){

                        // cancel the current request
                        var defer = $q.defer();
                        defer.resolve();
                        config.timeout = defer.promise;

                        state.go('account.select');

                    }
                }

                return config;
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

这给我带来了无限循环.出于某种原因,当state.go发生火灾 - 并且它被重新拦截时,状态仍然是"user.list"

注意:我使用的是ui-router,角度为1.2.6

另一个注意事项:我想把它放在另一个地方是一个state.resolve块.

谢谢你的帮助!

angularjs angular-ui-router

6
推荐指数
1
解决办法
4168
查看次数

为什么这个Angular ui路由器代码在$ digest中导致无限循环?

我尽可能地把代码煮熟了.关于嵌套状态和事件处理/广播的事情导致无限循环.在Chrome中,我可以暂停它并看到它在Angular的$digest功能中永远循环.知道为什么吗?这是我的示例代码中的错误,还是AngularUI路由器中的错误?

<!doctype html>
<html ng-app='bugapp' ng-controller='BugAppCtrl'>
<head>
  <script src='//code.jquery.com/jquery-1.10.1.min.js'></script>

  <!-- Angular 1.2.11 -->
  <script src='//ajax.googleapis.com/ajax/libs/angularjs/1.2.11/angular.js'></script>

  <!-- UI router 0.2.8 -->
  <script src='//cdn.jsdelivr.net/angular.ui-router/0.2.8/angular-ui-router.js'></script>

  <script>
angular.module('bugapp', ['ui.router'])
  .run(function ($rootScope, $state, $stateParams) {
    $rootScope.$state = $state;
    $rootScope.$stateParams = $stateParams;
  })
  .config(function ($locationProvider, $stateProvider, $urlRouterProvider) {
    $locationProvider.html5Mode(false);

    $stateProvider
      .state("root", {
        abstract: true,
        url: "/servletContext?asUser",
        template: '<div ui-view></div>'  // ???
      })
      .state("root.home", {
        abstract: true,
        url: "/home",
        template: "<div ng-if='hasData()' ui-view ></div>"

      })
      .state("root.home.profile", {
        url: "/profile",
        template: '<div>whatever</div>' …
Run Code Online (Sandbox Code Playgroud)

angularjs angular-ui-router

5
推荐指数
1
解决办法
4466
查看次数

标签 统计

angular-ui-router ×2

angularjs ×2