2016-03-06 5 views
1

Я ищу способ получить имя пути для текущего маршрута, как я определяю его в $routeProvider, то есть /customer/:id.Как получить имя пути текущего маршрута в AngularJS?

$location.path() возвращает путь, /customer/1, но не путь, /customer/:id.

Я нашел $route.current.$$route.originalPath, который возвращает именно то, что мне нужно. Однако мне бы очень хотелось не полагаться на частные методы.

Есть ли общественный эквивалент $route.current.$$route.originalPath?

+0

Могу ли я знать, что именно вы хотите сделать здесь –

+0

@PankajParkar Могу ли я знать, какая часть вопроса остается неясным для вас? –

+0

Получив $$ route.originalPath, что вы с ним делаете? –

ответ

0

Вы можете использовать

$state.$current.url.sourcePath 

Но это немного Hacky тоже :)

+0

Почему вы говорите, что это хаки? –

+0

Не знаю, может быть, это потому, что я никогда не использовал неразрешенный URL-адрес штата прямо в состоянии, поэтому для меня использование «$ current» странно по этому поводу :) Обратите внимание, что вы также можете получить доступ к неразрешенному URL-адресу штата в $ stateChangeStart и $ stateChangeSuccess прослушиватели на $ rootScope во втором параметре (toState) –

+1

К сожалению, это для 'ui-router'. Я искал решение для 'ngRoute'. –

0

Не уверен, что если вы нашли другой способ сделать это, и случайно наткнулся этот вопрос, когда я отладки некоторые вопросы маршрутизации -

AFAIK единственный способ, чтобы получить именно то, что вам нужно это использовать:

$route.current.$$route.originalPath 

Другой способ справиться с этим - использовать широковещательные события, такие как routeChangeStart/routeChangeSuccess, чтобы официально узнать, какой маршрут был разрешен.

$rootScope.$on('$routeChangeSuccess', function (event, next, prev) { 
    console.log(next.$$route.originalPath); 
}); 
0

Попробуйте

$route.current.originalPath 
Смежные вопросы