gpt4 book ai didi

javascript - 如何从angularjs中的路由构造 Controller 名称

转载 作者:行者123 更新时间:2023-11-30 05:31:26 25 4
gpt4 key购买 nike

我正在尝试定义一个通用路由来处理大部分请求。每次添加功能都添加路由是我觉得不好而且不可维护的地方。

所以我的目标是编写一个通用路由并动态解析 decencies,其中包括解析所有依赖的 Controller 和服务文件、解析 templateUrl 和解析 Controller 名称。 我可以解析/构造除 Controller 名称之外的所有内容。请帮我解决问题

我使用自定义解析器的路线:

$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

最佳答案

如果我对您的问题的理解正确,那么您希望能够通过名称实例化 Controller 。

这在 AngularJS 中是可能的,如 Testing Controllers 中所述.

您必须使用 $controller像这样的服务:

$scope = $rootScope.$new();
$controller('NamedController', {$scope: $scope});

这是一个有效的插件:http://plnkr.co/edit/AVCEdLS9zhIzCyZgcXZF?p=preview

关于javascript - 如何从angularjs中的路由构造 Controller 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26735134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com