gpt4 book ai didi

AngularJS - 获取已定义路由的列表 - $routeProvider

转载 作者:行者123 更新时间:2023-12-04 02:05:23 26 4
gpt4 key购买 nike

我正在尝试实现 named routes ,所以我不必编写整个路径(经常更改)。

我在想我可以写一个服务来返回定义的路由列表和一个将对象转换为路由的过滤器

使用示例如下所示:

<a ng-href="{id:1}|route:'detail'">Click here!</a>

如果我在路由定义中添加了 name:'detail',这将生成以下结果:
<a href="#/detail/1/">Click here!</a>

我认为这很简单,但是:

如何获取已定义路线的列表?

我在想我可以使用 routeProvider ,但是 AFAIK 它没有我可以访问的公共(public)方法或属性。

最佳答案

事实证明这很简单:

http://plunker.co/edit/GNZxcvK4hfQ9LrlSvasK?p=preview

Components.filter('url', function ($route) {
function resolveRoute(options, route) {
var parts = route.split('/');
for (var i = 0; i < parts.length; i++) {
var part = parts[i];
if (part[0] === ':') {
parts[i] = options[part.replace(':', '')];
if (parts[i] == undefined) throw Error('Attribute \'' + part + '\' was not given for route \'' + route + '\'')
}
}
return parts.join('/');
}

return function (options, routeName) {
var routes = [];


angular.forEach($route.routes,function (config,route) {
if(config.name===routeName){
routes.push(route);
}
});

if (routes.length == 1) {
return resolveRoute(options, routes[0]);
}
else if (routes.length == 0) {
throw Error('Route ' + routeName + ' not found');
}
throw Error('Multiple routes matching ' + routeName + ' were found');
}
});

关于AngularJS - 获取已定义路由的列表 - $routeProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16012270/

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