在 .state 中使用 $rootScope 的不同用户角色的不同选项卡
Posted
技术标签:
【中文标题】在 .state 中使用 $rootScope 的不同用户角色的不同选项卡【英文标题】:Different tabs for different user roles using $rootScope in .state 【发布时间】:2017-03-20 00:10:08 【问题描述】:我的目标是为不同的用户提供不同的标签布局 像病人和医生一样
在我的控制器中,我将登录的用户存储在 $rootScope.currentUser 中,如下所示
$auth.login(credentials).then(function(data)
return $http.get(CONSTANTS.LINK+'/authenticate/user');
, function(data)
var alertPopup = $ionicPopup.alert(
title: 'Error Logging in',
template: 'Invalid Credentials'
);
alertPopup.then(function(res)
);
).then(function(response)
var user = JSON.stringify(response.data.user);
localStorage.setItem('user', user);
$rootScope.authenticated = true;
$rootScope.currentUser = response.data.user;
$state.go('tabs.home');
);;
现在这是我的 app.js。什么都没发生。我做对了吗? 当我尝试 console.log($rootScope.currentUser);
时,$rootscope.currentUser 也会返回 undefined.state('tabs',
url: '/tab',
templateUrl: function ($rootScope)
if($rootScope.currentUser.role == 'Patient')
return 'templates/tabs.html';
else if ($rootScope.currentUser.role == 'Doctor')
return 'templates/tabs-doctors.html';
,
abstract: true,
)
【问题讨论】:
我有点认为你在处理这一切都是错误的。我在想的是你应该为医生和病人创建不同的状态,然后在你的 .run(或准备好)函数中检查用户并使用 $state.go。我相信这可以带你走向正确的方向***.com/questions/27907670/… 也可以参考这个链接***.com/questions/23429055/…还有一个***.com/questions/25047884/… @Marko 谢谢你,先生!我会看看这个 ui-router 没有为 templateURL 函数使用 $injector 服务。它使用params
参数调用该函数。有关详细信息,请参阅ui-router $stateProvider API Reference。期望$rootScope
被注入该函数是错误的。
@Marko,我发布了我的解决方案:D
【参考方案1】:
由于我在他登录时将用户数据存储在本地存储中,因此我使用该数据来检查用户的角色。
.state('tabs',
url: '/tab',
templateUrl: function ()
var user = JSON.parse(localStorage.getItem('user'));
role = user.role;
if(role == 'Patient')
return 'templates/tabs.html';
else if (role == 'Doctor')
return 'templates/tabs2.html';
else
return 'templates/tabs.html';
,
abstract: true,
)
【讨论】:
以上是关于在 .state 中使用 $rootScope 的不同用户角色的不同选项卡的主要内容,如果未能解决你的问题,请参考以下文章
错误:$rootScope:inprog 操作已经在进行中 mvc 与 angularjs
如何删除 angularjs 中的 $rootScope 变量? [复制]
是否可以使用 $rootScope 作为存储在 Angular 1 中实现类似 Redux 的架构?
获取 AngularJS 错误:“[$rootScope:inprog] $digest 已经在进行中”没有手动 $apply