AngularJs通过URL获取路由

Nir*_*han 2 angularjs angularjs-routing

有没有办法通过URL获取路线?

我的意思是我有一条路线/users/:id,我正在使用路线对象$route

var route_object = ($route.routes['/users/:id']);

但是有可能通过此URL获取路线 /users/5

所以,当我尝试

var route_object = ($route.routes['/users/5']);

我得到了未定义的价值.

dfs*_*fsq 6

不,没有内置的方法来通过相应的URL获取路由对象.但是使用几行代码很容易.我的想法是针对路由正则表达式测试url:

var url = '/users/5/';

for (var path in $route.routes) {
    if ($route.routes[path].regexp && $route.routes[path].regexp.test(url)) {
        console.log('found route:', $route.routes[path]); 
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以把它包装在helper函数中并输入一些util服务或者控制器:

function getRouteByUrl(url) {
    for (var path in $route.routes) {
        if ($route.routes[path].regexp && $route.routes[path].regexp.test(url)) {
            return $route.routes[path]; 
        }
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)