如何从url字符串获取角度的路径信息

时间:2015-07-10 04:29:48

标签: angularjs

任何人都知道angular中是否有工具(或内置功能)从url字符串中获取路径对象?

实施例

我设置了这样的路线导航:

$routeProvider
  .when('/users/:id', 
    {
      templateUrl: 'components/users/edit.html',
      controller: 'UsersCtrl',
      access: {
        requiresLogin: true,
        roles: ['Admin']
      }
    });

我有一个像/users/2这样的字符串,我希望能够获得与该字符串相关联的路由对象,该对象包含templateUrlcontrolleraccess properties

我可以看到$route.routes中定义的所有路线,但路线的格式为/users/:id,因此我必须手动解析url

这样做的目的是基于路线导航保护ui-elements(使用directive)(例如带有授权标签的弹簧安全性)

我的directive名为navigate-todirective允许我像buttons一样使用anchor

<button navigate-to="/users/{{user.id}}">Edit</button>

我想确定当前用户是否可以导航到目标url(实际上没有导航到目标)。

我可以使用$routeChangeStart事件保护导航,我需要的是在路由之前访问路由信息(以执行安全检查)。

解决: 我找到了方法(查看$ route源代码)来匹配url并获取路由对象(手动),不理想,但它的工作原理。以下是获取路线信息的功能:

                var getRouteInfo = function(path) {
                var matched = false,
                    matchedRoute = null;
                angular.forEach($route.routes, function(route) {
                    if (!route.regexp) return;
                    if (!matched && route.regexp.exec(path)) {
                        matched = true;
                        matchedRoute = route;
                    }
                });
                return matchedRoute;
            };

0 个答案:

没有答案