$ stateParams用于已登录用户和所有用户

时间:2016-08-29 14:06:46

标签: angularjs ui-sref

我有仪表板,我是超级管理员。我创建用户个人资料,在那里我可以看到我的所有个人资料数据现在,我有所有用户的表,我想打开,如果需要,编辑某些用户的用户配置文件。 这是用于登录用户的呼叫用户配置文件()的html代码

<a href="#" class="btn btn-primary btn-block btn-sm" ui-sref="user-profile/:userID">{{'USER_PROFILE'| translate}}</a>

这里是ctrl,我称之为状态参数

.controller('userProfileCtrl', ['$scope', '$stateParams', '$state', '$http','userProfileFactory',
 function ($scope, $stateParams, $state, $http, userProfileFactory) {
 $scope.authentication = authService.authentication;
$scope.userID = $scope.authentication.userID;
$stateParams.userID = $scope.userID;
$scope.user = userProfileFactory.get({user: $stateParams.userID});
  $scope.user.$promise.then(function (data){
     console.log(data.id);
     return data;
 }); 

现在我想在表格中选择一些用户并打开他的个人资料

<tr ng-repeat="user in users|filter:f" such-href="user-profile/{{user.id}}">

使用此ctrl调用一些用户个人资料

$http.get(serviceBase + 'users/'+ $stateParams.userID +'/aaaa/').success (function(data){
            $scope.media = data.media;
            });

这是ui-state

.state('user-profile/:userID', {
                url: '/user-profile/:userID',
                templateUrl: 'aaaa/aaa/aaaae/user-profile.html',
                controller: 'aaaaCtrl'
            })

问题是,无论何时打开用户个人资料,我都会在个人资料中获取数据(超级管理员数据)。

1 个答案:

答案 0 :(得分:0)

我为user_id设置了$ rootScope,以供全局使用。现在,当您启动应用程序时,您将获得已登录的用户。

$scope.authentication = authService.authentication;
$rootScope.user_id = $scope.authentication.userID;
$scope.user = userProfileFactory.get({user: $stateParams.userID});
 $scope.user.$promise.then(function (data){
     return data;
 });

现在在html中使用它。

such-href="user-profile/{{user_id}}. 

现在您已登录用户。

要让管理员像我们之前那样打开用户个人资料,而是在工厂中使用:USERID。

<tr ng-repeat="user in users|filter:f" such-href="user-profile/{{user.id}}">