2014-09-17 3 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을 넣을 경우에만 내 지시어로받은 탐색 데이터의 URL에 도메인 이름/프로토콜 등이 포함되어 있지 않습니다.

그런 다음 첫 번째 console.log는 완전한 URL을 제공하지만 두 번째는 빈 문자열을 반환합니다. 왠지 내 지시문에 $location.path()에 액세스 할 수 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

경로가 있어도 내 응용 프로그램은 루트 폴더의 기본 페이지에 있지 않습니다.

난 그냥 그 $의 location.path은() 해시 (#), I는 프로토콜, 서버 이름없이 URL의 일부를 반환하기를 기대 후 URL의 일부를 반환 발견

UPDATE 및 서버 포트. 내가 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로 예를 들어

은 다음과 같습니다 URL : http://stackoverflow.com/questions/25894149/#something

$window.location.pathname/질문에 돌려 줘야/25894149/

관련 문제