我想知道是否有一种方法可以根据用户的权限动态扩展我的 Angular Controller 。
例如,假设我们分别具有三个不同的权限级别(管理员、主管、用户)和一个 Angular Controller
app.controller("myController", ["$scope", function($scope){
$scope.userFunc = function(){....};
$scope.supervisorFunc = function(){....};
$scope.adminFunc = function(){....};
}]);
仅当用户拥有正确的权限时,我才想添加supervisorFunc和adminFunc。
- 用户 Controller 将仅包含 userFunc
- Supervisor 将包含 userFunc 和supervisorFunc
- Admin 将包含所有方法(userFunc、supervisorFun 和 adminFunc)
现在我想添加一个单独的 js 文件,它将额外的方法注入(inject)到 Controller 中,因此,如果您是 Supervisor,您的客户端将收到两个 js 文件,一个是主 myController,另一个是将扩展的 Supervisor 注入(inject)器我的 Controller 。
一件重要的事情是我不想在服务器端动态生成 myController js 文件,因为这是不好的做法。
有什么想法吗?
最佳答案
我喜欢这个主意,我们做同样的事情(某种程度上)。
如果第二组 Controller 项目没有新的要求(指令等),您应该能够执行以下操作:
在 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) {...}
在 onlyForYouControllers.js 中 - 仅在需要时添加
function someCtrlOnlyForYou($scope, $location, $http) {...}
就像我写的那样 - 您必须声明应用程序开始时需要什么 - 即使它没有被一组特定的 Controller 使用。
关于javascript - 根据用户权限向 angularJs Controller 添加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26862253/