javascript - 根据用户权限向 angularJs Controller 添加方法

标签 javascript angularjs

我想知道是否有一种方法可以根据用户的权限动态扩展我的 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/

相关文章:

javascript - 将键/值数组中的对象与另一个对象(键/值)进行比较

javascript - AngularJS ng-pattern 的正则表达式问题

javascript - 使用 UI-Router 避免在 URL 更改时重新加载页面

javascript - 在 d3 中从 v3 转换为 v5 不会更新可视化,但会添加另一个可视化

javascript - 类型错误 : Highcharts[h] is not a function

javascript - 如何访问传递给下一页的参数

javascript - 难以将事件处理程序附加到动态生成的模态窗口元素

javascript - jquery中处理多个ID

javascript - 如何在剑道下拉列表中搜索文本?

javascript - ES6 导入和 Angular Controller 的初始化顺序