基于属性在angularjs中路由

时间:2016-07-31 10:45:57

标签: angularjs

我想根据我的角度应用中的用户类型进行路由。

因此,如果用户是管理员,则应该在登录后根据用户类型的数据来重定向到admin.html,如果用户然后是user.html。

在此,我想添加条件:

.when('/dashboard', {        
    title: 'dashboard',
    templateUrl: 'partials/User.html',
    controller: 'authCtrl'    
})

3 个答案:

答案 0 :(得分:0)

我是使用ui-router而不是ng-router完成的,但你仍然可以在这里查看我的答案:

Check if user has permission to access specific states

基本上我构建一个服务并验证用户是否有权访问该状态,将用户重定向到另一个状态。

每次状态更改时都会在run函数中调用该服务。

答案 1 :(得分:0)

在你的登录控制器中注入$ routeParams依赖项,然后像这样影响$ routeParams变量user(simple user或admin)的值

$routeParams.user = data.user;

现在就像这样配置您的路线

.when('/:user', {
      title: 'dashboard',
      templateUrl:'partials/:user.html'
      controller: 'authCtrl'  
 });

因此,如果它是简单的用户,您将被重定向到partials / user.html,如果是管理员,您将被重定向到partials / admin.html。

答案 2 :(得分:0)

您可以使用.run函数并在那里检查用户并使用$ location重定向到条件页面。

.when('/user', {        
    title: 'dashboard',
    templateUrl: 'partials/User.html',
    controller: 'authCtrl'    
}).when('/admin', {        
    title: 'dashboard',
    templateUrl: 'partials/Admin.html',
    controller: 'authCtrl'    
})

来自运行功能

.run(function($location){
    console.log("run")
    var user = "user";
    if(user === "Admin"){
      $location.path("/admin")
    }else{
       $location.path("/user")
    }
  })

来自控制器

.controller('authCtrl',function($location){
    console.log("controller")
     var user = "admin";
    if(user === "admin"){
      $location.path("/admin")
    }else{
       $location.path("/user")
    }
  })