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

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

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

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

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

解决方法

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

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

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

控制器很简单:

  1. (function () {
  2. "use strict";
  3.  
  4. angular.module("core").controller("DefaultController",[
  5. "$rootScope","$state","roles",function ($rootScope,$state,roles) {
  6. if ($rootScope.hasPermission(roles.SomeRoleName)) {
  7. $state.go("someStateName");
  8. } else if ($rootScope.hasPermission(roles.SomeRoleName)) {
  9. $state.go("someStateName");
  10. }
  11. }
  12. ]);
  13. })();

猜你在找的JavaScript相关文章