根据用户权限将方法添加到angularJs控制器

时间:2014-11-11 10:05:20

标签: javascript angularjs

我想知道是否有办法根据用户的权限动态扩展我的角度控制器。

例如,假设我们分别有三个不同的权限级别(Admin,Supervisor,User)和角度控制器

app.controller("myController", ["$scope", function($scope){
   $scope.userFunc = function(){....};
   $scope.supervisorFunc = function(){....};
   $scope.adminFunc = function(){....};
}]);

我想在用户拥有正确权限的情况下添加supervisorFunc和adminFunc。

  • 用户控制器仅包含userFunc
  • 主管将包含userFunc和supervisorFunc
  • 管理员将包含所有方法(userFunc,supervisorFun和adminFunc)

现在我想添加一个单独的js文件,将其他方法注入控制器,所以如果你是一个Supervisor,你的客户端将收到两个js文件,一个是主myController和另一个将扩展的Supervisor Injector myController的。

一个重要的事情是我不想在服务器端动态生成myController js文件,因为这是不好的做法。

任何想法?

1 个答案:

答案 0 :(得分:0)

我喜欢这个想法,我们做同样的事情(有点)。

如果第二组控制器项目没有新要求(指令等),您应该可以这样做:

app.js中的

var app = angular.module('myModule', ["whatever-directive", "some-service"]);
app.config(['$httpProvider', '$locationProvider', function ($httpProvider, $locationProvider) {
  ..
  ..
}]);
..
..

在controllers.js

function someCtrl($scope, $location, $http) {...}
function someOtherCtrl($scope, $location, $http) {...}

in onlyForYouControllers.js - 仅在需要时添加

function someCtrlOnlyForYou($scope, $location, $http) {...}

就像我写的那样 - 你必须在应用程序中声明需要的内容 - 即使它没有被特定的一组控制器使用。