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

Add method to angularJs controller according the user permissions

本文关键字:控制器 添加 方法 angularJs 用户 权限      更新时间:2023-09-26

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

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

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

只有当用户拥有正确的权限时,我才想添加supervisorFunc和adminFunc。

  • 用户控制器将只包含userFunc
  • Supervisor将包含userFunc和supervisorFunc
  • Admin将包含所有方法(userFunc、supervisorFun和adminFunc)

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

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

有什么想法吗?

我喜欢这个想法,我们也做同样的事情。

如果第二组控制器项目没有新的要求(指令等),您应该能够做到这一点:

在app.js:中

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

在控制器.js 中

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

在onlyForYouControllers.js中-只有在需要时才添加

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

就像我写的那样——你必须声明应用程序中需要什么才能开始——即使它没有被一组特定的控制器使用。