基于用户加载不同的controller/js文件'访问级别
load different controllers/js files based on users' access levels
我正在开发一个web应用程序,其中用户具有不同的访问级别。每个访问级别都有不同的控制器/视图集。
我正在使用ngRoute
和ng-view
。每个控制器都有自己的JS文件,它还包含该控制器的路由映射信息。每个控制器看起来像:
angular.module('MainApp', ['ngRoute'])
.controller('ContollerX', function() {
})
.config(function($routeProvider) {
$routeProvider
.when('/ControllerXURL', {
templateUrl: 'ViewX.html',
controller: 'ControllerX'
});
});
(不确定这是否是最佳做法)
我不想提前加载所有的控制器。是否可以根据用户的访问级别(在他/她登录后确定)仅加载用户需要的控制器(从后端返回的用户访问级别数据)?什么是最好的方法?
我正在考虑动态加载控制器脚本,比如插入脚本标记。它行得通吗?AngularJs对此有任何内置功能吗?
在路由定义对象中使用resolve
属性有一种更简单的方法可以实现您想要的内容。resolve
返回一个promise,并且只有当该promise被解析时,使用解析的到控制器的路由才会被重定向。您可以使用它重定向到所需的视图。
假设您有两个视图:AuthorizedUsers.html和UnauthorizedUsers.html以及相应的控制器AuthorizedUsersController和UnauthorizedUsersContrller。您可以将这些视图的路线定义如下:
angular
.module('MainApp', ['ngRoute'])
.controller('AuthorizedUsersController', function(auth) {
})
.controller('UnauthorizedUsersController', function() {
})
.config(function($routeProvider) {
$routeProvider
.when('/authorizedusers', {
templateUrl: 'AuthorizedUsers.html',
controller: 'AuthorizedUsersController',
resolve: {
auth: function ($q, $location) {
var defer = $q.defer();
if (isAuthorized) {
defer.resolve();
} else {
$location.path('/unauthorized');
defer.reject();
}
return defer.promise;
}
}
})
.when('/unauthorizedusers', {
templateUrl: 'UnauthorizedUsers.html',
controller: 'UnauthorizedUsersController'
});
});
相关文章:
- 调用laravel{{action(Controller@method}}通过传递vue.js数组中的变量
- 基于用户加载不同的controller/js文件'访问级别
- 未调用内部JS Angular Controller
- .view.xml 和 .controller.js 文件在 SAPUI5 上的位置
- 如何将 Controller.js 包含在 ng-include HTML 页面中
- Angular Js ng-controller没有填充该值
- 在JS脚本中调用Angular Controller
- AngularJS-如何在路由`when`controller中加载JS文件
- Mock Angular JS Controller Jasmine
- 如何在Web API(MVC)中将多个变量从typescript(angular.js)传递给Controller
- Minified JS只能通过将源代码粘贴到Controller中来工作
- 在Angular js中调用Controller
- Angular.js中的多个ng-controller无法工作
- Angular JS SPA:如何使用Angular Controller SPA来调用Angular service
- 在Array Controller ember.js中显示项目
- 在Angular JS中,是否可以动态设置ng-include或ng-controller ?
- 美元的范围.在使用MongoDB的controller.js中编辑不正常工作
- 如何将Angular-Chart.JS数据添加到UI-Router . state Controller中?
- Angular JS控制器被调用两次(ng-controller)
- 从rails中的js.erb调用Controller方法