我正在尝试定义一个通用路由来处理大部分请求。为每个功能添加添加路由是我觉得不好且不可维护的。
所以我的目标是编写一个通用路由并动态解决问题,包括解析所有依赖的控制器和服务文件、解析 templateUrl 和解析控制器名称。我可以解析/构造除控制器名称之外的所有内容。请帮我解决
我使用自定义解析器的路线:
$routeProvider
.when('/:module/:controller/:action?', routeResolver.resolve())
在我的自定义解析器中:
function routeResolverProvider(){
this.$get= function(){
return this;
}
this.resolve = function (options) {
var route = {};
route.templateUrl = function (params) {
var path = String.format('/app/components/{0}/{1}.view.html', params.module, params.controller);
return path;
};
//================================================================================
route.controller='THIS IS WHAT I WANT TO CONSTRUCT FROM ROUTE as templateUrl'
//================================================================================
route.resolve = {
loadDependencies: ['$q', '$rootScope', '$route', function ($q, $rootScope, $route) {
// MY RESOLVE LOGIC HERE
// I construct dependent file path from route values
// String.format('/app/components/{0}/{1}.controller.js', params.module, params.controller);
}]
};
return route;
}}
app.provider('routeResolver', routeResolverProvider)
一些好文章: https ://github.com/angular/angular.js/wiki/Understanding-Dependency-Injection https://medium.com/opinionated-angularjs/advanced-routing-and-resolves-a2fcbf874a1c