В моем угловом приложении у меня есть меню с набором ссылок, я поместил ссылки в угловую директиву, и я хочу использовать текущее местоположение, чтобы решить, активна ли ссылка, а затем добавить к нему класс 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 для достижения этого?
Вы видели этот вопрос? http://stackoverflow.com/questions/12592472/how-to-highlight-a-current-menu-item –
Я сделал это сейчас, но я не вижу решения там – Michiel