2014-09-17 2 views
-1

В моем угловом приложении у меня есть меню с набором ссылок, я поместил ссылки в угловую директиву, и я хочу использовать текущее местоположение, чтобы решить, активна ли ссылка, а затем добавить к нему класс css.

То, что я сделал до сих пор это: (обнаженно до соответствующего материала)

angular.module(‘myNavigation’).directive(‘navItem’, ['$location', function($location) { 

    console.log($location.absUrl()); 
    console.log($location.path()); 

    return { 
     restrict: ‘EA’, 
     scope: true, 
     link: function (scope) { 
      isCurrentLink = angular.equals(scope.item.href,$location.absUrl()); 
     }, 
     template: ‘<a ng-href=”{{item.href}}” ng-class=”{active:isCurrentLink}”>{{item.name}}</a>” 
} 
}]); 

Это прекрасно работает, но только если я ставлю полные адреса в данных для моей навигации, включая имя_домен и т.д. Но url в навигационных данных, полученных моей директивой, не содержит имени домена/протокола и т. д.

Затем первый console.log дает мне полный URL-адрес, а второй возвращает пустую строку. Почему-то я не могу получить $location.path() в моей директиве. Что я делаю не так?

Кстати, у меня есть путь, мое приложение не находится на странице по умолчанию в корневой папке.

UPDATE

Я только что обнаружил, что $ location.path() возвращает часть URL после хеша (#), я ожидал его, чтобы вернуть часть URL без протокола, имясервера и порт сервера.

Так что, когда я иду в https://stackoverflow.com/posts/25894149/, я хотел бы иметь сообщений/25894149/.

Могу ли я использовать $ location для достижения этого?

+0

Вы видели этот вопрос? http://stackoverflow.com/questions/12592472/how-to-highlight-a-current-menu-item –

+0

Я сделал это сейчас, но я не вижу решения там – Michiel

ответ

1

Я узнал, что $location не может предоставить эту информацию.

Вместо этого вы можете указать $window, вы можете запросить у $window.location.pathname, который дал мне именно то, что мне нужно.

, например, когда вы Ссылка: URL: http://stackoverflow.com/questions/25894149/#something

$window.location.pathname Виль вернуться /вопросы/25894149/

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