如何在 angular 应用程序中访问非路由 url 参数?

How can I access non-route url parameters in an angular app?

我正在将 angular 应用程序添加到现有页面的一部分,该页面在 ASP.NET MVC 应用程序中使用了大量 kendo MVVM 控件。幸运的我。

我想从 angular 路由之前的 URL 路由访问参数。

因此对于具有以下内容的模块:

angular
    .module('myModule', ['someCommonControls', 'ngRoute', 'aConfigModule'])
    .config(function ($routeProvider) {
        $routeProvider
            .when('/Something/Something/Details/:somethingId', {
                templateUrl:'/path/to/templates/awesome.html',
                controller: 'awesome',
                controllerAs: 'awesome'
                }
            })
            .otherwise({ redirectTo: '/awesome' })
        ;
});

当我打 http://localhost/Something/Something/Details/something-id-guid-deadbeef
页面加载并包含我的应用程序和其他路由 http://localhost/Something/Something/Details/something-id-guid-deadbeef#awesome

现在,路由基于 #awesome,因此不包含 somethingId 以便我推送到我的控制器 ctor。

如何访问它并将其传递给 ctor?

因为我基本上是从 url 中获取一个值,所以我使用 old school approach 直到我可以正确地在整个应用程序中使用路由:

ctrl.theGuid = '';
if (document.location.pathname.indexOf('/Something/Something/Details') != -1) {
    //TODO update this to the routing engine when possible
    //0:first '/', 1:Something, 2:Something, 3:Details, 4: guid
    ctrl.theGuid = document.location.pathname.split('/')[4];
}