在.state中使用$ rootScope的不同用户角色的不同选项卡

时间:2016-11-06 16:40:11

标签: angularjs ionic-framework

我的目标是,我将为不同的用户提供不同的标签布局 像病人和医生

在我的控制器中,我将记录的用户存储在 $ 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,
    })

1 个答案:

答案 0 :(得分:2)

由于我在登录时将用户数据存储在本地存储中,因此我使用该数据来检查用户的角色。

.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,
    })