javascript – ui-router:基于用户角色的默认路由

前端之家收集整理的这篇文章主要介绍了javascript – ui-router:基于用户角色的默认路由前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的项目中使用UI路由器.我的应用程序的主页包含4个选项卡,每个选项卡都路由到不同的模板.这是我当前的路由代码,即使用forEach创建6条路由.
['Draft','Assigned','InProgress','Completed','Rejected','All'].forEach(function (val) {
        $stateProvider.state({
            name: 'root.jobs.list.' + val.toLowerCase(),url: '/' + val.toLowerCase(),views: {
                'currentTab': {
                    templateUrl: 'adminworkspace/jobs',controller: 'JobsController'
                }
            },data: {
                userJobsStatus: val
            }
        });
    });

默认情况下,当用户登录时,它将转到“root.jobs.list.draft”.如何根据登录用户的角色(管理员,用户,文员等)重定向到给定状态.如果要将属于“工程师”或“首席工程师”角色的所有用户重定向到“root.jobs.list.inprogress”

我最初在控制器中有这个,但正如你所看到的,它没有用,因为每次我点击一个标签时,它总是路由回“root.jobs.list.inprogress”

if (user !== undefined) {
        if (user.BusinessRole == "Engineer" || user.BusinessRole == "Lead Engineer")
            $state.go('root.jobs.list.inprogress');
    }

解决方法

我已经不得不解决这个问题:

我已经注册了一个仅用于根据角色处理默认页面的状态.

$urlRouterProvider.otherwise("/");
        $stateProvider.state("default",{
            url:"/",templateUrl: "app/core/home/default.html",controller: "DefaultController"
        });

控制器很简单:

(function () {
    "use strict";

    angular.module("core").controller("DefaultController",[
        "$rootScope","$state","roles",function ($rootScope,$state,roles) {
            if ($rootScope.hasPermission(roles.SomeRoleName)) {
                $state.go("someStateName");
            } else if ($rootScope.hasPermission(roles.SomeRoleName)) {
                $state.go("someStateName");
            }
        }
    ]);
})();

猜你在找的JavaScript相关文章