2013-11-17 5 views
0

Я работаю над своим первым угловым приложением весь день и задаю основной вопрос.Newbie Angular Q - Модифицирующий выход службы

Цель состоит в том, чтобы создать текстовое поле с двумя строками описания текущего маршрута URL-адреса и действия вроде следующего:

Вы находитесь на: {{urlRoute}}/{{urlAction}}

Это информация будет находиться в панели заголовка для всех страниц приложения и должна обновляться по мере того, как пользователь посещает страницы.

Как я могу запустить строку .split ("/") на выходе $ location.path() и вернуть ее в виде в виде двух строк, urlRoute, urlAction в пространстве имен корневой области? До сих пор я это из другого переполнения стека поста:

var blogApp = angular.module('blogApp', [ 
    'ngRoute', 
    'blogControllers' 
]).run(function($rootScope, $location) { 
    $rootScope.location = $location; 
    $rootScope.urlRoute = $location.path().split('/')[0]; 
}); 

в то время как я могу получить доступ к {{location.path()}} в шаблоне ngIncluded заголовка с помощью выше, я не могу получить доступ {{}} urlRoute - Я чувствую, что у меня что-то не хватает, может кто-нибудь просветить меня?

+0

Вы уверены, что $ location.path() не начинается с слэш? В этом случае $ location.path(). Split ('/') [0] вернет пустую строку, и вместо этого вы должны искать $ location.path(). Split ('/') [1]. – pasine

ответ

1

Вы только пытаетесь установить это во время выполнения, и вполне вероятно, что маршрут может даже не быть установлен до run() пожаров. Даже если это было у вас нет никакой возможности слушать изменения

Слушайте один из routeChange событий

.run(function($routeScope, $location){ 

    $rootScope.$on('$routeChangeSuccess',function(current,previous){ 
     /* do what you want with either arguments or $location*/ 
     /* log "current" to console, will see lots of properties */ 
    }) 

}) 

$route docs

Смежные вопросы