相关疑难解决方法(0)

Angularjs ui-router.如何重定向到登录页面

我有4种状态:dashboard,dahboard.main,dashboard.minor,login.仪表板是抽象的,它是.minor和.main状态的父状态.以下是我的代码:

.state('dashboard', {
        url: "/dashboard",
        abstract: true,
        templateUrl: "views/dashboard.html",
        resolve: {
            auth: function ($q, authenticationSvc) {
                var userInfo = authenticationSvc.getUserInfo();
                if (userInfo) {
                    return $q.when(userInfo);
                } else {
                    return $q.reject({ authenticated: false });
                }
            }
        },
        controller: "DashboardCtrl",
        data: { pageTitle: 'Example view' }
    })
    .state('dashboard.main', {
        url: "",
        templateUrl: "views/main.html",
        controller: "DashboardCtrl",
        data: { pageTitle: 'Main view' }
    })
Run Code Online (Sandbox Code Playgroud)

正如您在仪表板状态中看到的,我有解决方案选项.如果他没有被授权,我想将用户重定向到登录页面.出于这个原因,我使用特殊的authenticationSvc服务:

.factory("authenticationSvc", ["$http", "$q", "$window", function ($http, $q, $window) { …
Run Code Online (Sandbox Code Playgroud)

state config resolve angularjs angular-ui-router

55
推荐指数
1
解决办法
8万
查看次数

如何修复'超出最大调用堆栈大小'AngularJS

我正在使用AngularJs和Ui-Router,我正在尝试设置两个不同的主页,一个用于登录的用户,另一个用于非用户.但是我收到以下错误:

RangeError: Maximum call stack size exceeded
Run Code Online (Sandbox Code Playgroud)

我跑了console.trace(),我可以看到有一个问题导致状态无限循环(或类似的东西).BUt我不知道如何解决它.

这是生成错误的代码.

.run(function ($rootScope, $state, $location, Auth) {
    $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState) {
      if(fromState.name === "") {
        if (Auth.isLoggedIn()) {
            $state.go('main');
            event.preventDefault();
        } else {
          $state.go('welcome');
          event.preventDefault();
        }
      } else {
         if (toState.authenticate && !Auth.isLoggedIn()) {
             $location.path('/login');
             event.preventDefault();
         }
      }
    });
Run Code Online (Sandbox Code Playgroud)

从我所知道的,它似乎源于 if(fromState.name === "")

javascript angularjs angular-ui-router

9
推荐指数
2
解决办法
3万
查看次数

Angular ui-router:离开特定页面时警告用户

在我的角度应用程序,我需要他之前警告用户离开一个特定的网页,而不是每一个页面.

如果我$locationChangeStart在页面的控制器中使用我要警告用户的内容,即使进入页面也会触发,这是不希望的.

如果我在父控制器上使用它,它将在任何地方触发,我必须添加复杂的if/else或switch结构,基本上告诉它永远不会触发,除非用户放弃该特定状态.

如何检测用户实际离开(并且仅离开)特定的stateUI-Router?

javascript angularjs angular-ui-router

7
推荐指数
1
解决办法
4730
查看次数