角度ui路由器的第一个状态为`name:“”

马克·伯格

我是Angle的新手,正在尝试使用angular ui路由器。当我导航到时,/我得到这个抽象状态$state.currentObject {name: "", url: "^", views: null, abstract: true}无论如何,这样我的当前状态是files这是我的代码:

(function() {
    'use strict';

    angular.module('carton', [
        'ui.router',
        'carton.controllers',
        'carton.services',
        'carton.directives'
    ]).
    config([
        '$stateProvider',
        '$urlRouterProvider',
        function(
            $stateProvider,
            $urlRouterProvider
        ) {
            $urlRouterProvider.otherwise('/');
            $stateProvider.
            state('files', {
                url: '/',
                templateUrl: 'partials/files.html',
                //controller: 'FilesCtrl'
                access: {
                    isFree: false
                }
            }).

            state('login', {
                url: '/login',
                templateUrl: 'partials/login.html',
                controller: 'loginCtrl',
                access: {
                    isFree: true
                }
            }).

            state('register', {
                url: '/register',
                templateUrl: 'partials/register.html',
                //controller: 'RegisterCtrl'
                access: {
                    isFree: true
                }
            });

        }
    ])

    .run(['$rootScope', '$state', 'UserService',
        function($root, $state, userSrv) {
            $root.$on(
                '$locationChangeSuccess',
                function(event) {
                    console.log($state.current);
                    if (!$state.current.access.isFree && !userSrv.isLogged) {
                        $state.go('login');
                    }
                }
            )
        }
    ]);
})();
拉迪姆·科勒

我创建了一个plunker,应该显示如何操作。下文描述了该解决方案的2个主要部分。

我们可以在状态定义上使用一些特殊的设置,但是必须将它们嵌套在data对象中。请参阅:

将自定义数据附加到状态对象

调整后的state清晰度为:

state('files', { 
  ...
  data: {           // here we do nest the custom setting into "data"
    access: {
      isFree: false
    }
  }
})

.state('login', {
  ...
  data: {
    access: {
      isFree: true
    }
  }
})

而且,更适合event聆听$rootScope.$on('$stateChangeStart', ..这是一个示例如何执行此操作:

这可能是我们的案例中的实现:

.run(['$rootScope', '$state', 'UserService',
    function($root, $state, userSrv) {

      $root.$on('$stateChangeStart', function(event, toState
                           , toParams, fromState, fromParams) {

        var isLoginState = toState.name === "login";
        if (isLoginState) {
          return;
        }

        var shouldRequireLogin = !userSrv.isLogged
                    && !toState.data.access.isFree;
        if (shouldRequireLogin) {

          event.preventDefault()
          $state.go('login');
        }
      })
    }
])

有一个工作示例 registerlogin可始终,files只要登录上)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

角度ui路由器的第一状态为`name:“”

来自分类Dev

PC到路由器到路由器,第一个路由器的IP是什么?

来自分类Dev

离子/角度ui路由器:在向后导航时将父状态及其子状态视为一个状态

来自分类Dev

角度路由器重定向到第一个选项

来自分类Dev

使用第一个路由器网络范围配置第二个路由器

来自分类Dev

如何使我的PC始终从WiFi路由器获取第一个本地IP?

来自分类Dev

backbonejs 路由器第一个查询参数

来自分类Dev

角度ui路由器状态问题

来自分类Dev

两个路由器-1个直接连接到第一个路由器的端口

来自分类Dev

如何知道UI路由器中的下一个状态

来自分类Dev

使用dd-wrt和旧的Linksys路由器扩展wifi(无需访问第一个路由器)

来自分类Dev

python简单的路由器URL匹配器,如何与第一个“ /”出现重新匹配

来自分类Dev

我如何重定向到第一个子组件vue路由器

来自分类Dev

角度ui路由器:1个网址同时触发了父状态和子状态

来自分类Dev

过渡到角度ui路由器上的另一个模态后如何关闭模态

来自分类Dev

角度UI路由器,嵌套状态不显示

来自分类Dev

滚动时的角度UI路由器状态

来自分类Dev

角度ui路由器状态模板不起作用

来自分类Dev

未知状态的角度ui路由器特定处理

来自分类Dev

当路由器收到状态时,React 路由器 redux 滞后一个历史步骤

来自分类Dev

如何将路由器中的组件状态传递给另一个路由器组件

来自分类Dev

匹配AngularJS UI路由器中的一个或另一个单词

来自分类Dev

匹配AngularJS UI路由器中的一个或另一个单词

来自分类Dev

从一个状态转换到另一状态后,UI路由器和变量不再位于$ scope中的问题

来自分类Dev

角度ui路由器父网址设置为/

来自分类Dev

一个AngularUI路由器状态共享范围中的两个视图

来自分类Dev

将两个Wi-Fi路由器设置为一个网络

来自分类Dev

角度ui网格分组显示组行中的第一个元素

来自分类Dev

带有ui-router的AngularJS和第一个请求的附加状态

Related 相关文章

  1. 1

    角度ui路由器的第一状态为`name:“”

  2. 2

    PC到路由器到路由器,第一个路由器的IP是什么?

  3. 3

    离子/角度ui路由器:在向后导航时将父状态及其子状态视为一个状态

  4. 4

    角度路由器重定向到第一个选项

  5. 5

    使用第一个路由器网络范围配置第二个路由器

  6. 6

    如何使我的PC始终从WiFi路由器获取第一个本地IP?

  7. 7

    backbonejs 路由器第一个查询参数

  8. 8

    角度ui路由器状态问题

  9. 9

    两个路由器-1个直接连接到第一个路由器的端口

  10. 10

    如何知道UI路由器中的下一个状态

  11. 11

    使用dd-wrt和旧的Linksys路由器扩展wifi(无需访问第一个路由器)

  12. 12

    python简单的路由器URL匹配器,如何与第一个“ /”出现重新匹配

  13. 13

    我如何重定向到第一个子组件vue路由器

  14. 14

    角度ui路由器:1个网址同时触发了父状态和子状态

  15. 15

    过渡到角度ui路由器上的另一个模态后如何关闭模态

  16. 16

    角度UI路由器,嵌套状态不显示

  17. 17

    滚动时的角度UI路由器状态

  18. 18

    角度ui路由器状态模板不起作用

  19. 19

    未知状态的角度ui路由器特定处理

  20. 20

    当路由器收到状态时,React 路由器 redux 滞后一个历史步骤

  21. 21

    如何将路由器中的组件状态传递给另一个路由器组件

  22. 22

    匹配AngularJS UI路由器中的一个或另一个单词

  23. 23

    匹配AngularJS UI路由器中的一个或另一个单词

  24. 24

    从一个状态转换到另一状态后,UI路由器和变量不再位于$ scope中的问题

  25. 25

    角度ui路由器父网址设置为/

  26. 26

    一个AngularUI路由器状态共享范围中的两个视图

  27. 27

    将两个Wi-Fi路由器设置为一个网络

  28. 28

    角度ui网格分组显示组行中的第一个元素

  29. 29

    带有ui-router的AngularJS和第一个请求的附加状态

热门标签

归档