문제

나는 각도 JS 응용 프로그램 defaultController 제어하는 헤더니다.그때 나는 어떤 다른 컨트롤러 하나씩 보기입니다.전망대가 있는 로드 <main>.나는 부하를 사용하여 뷰 $routeProvider 이 코드:

myapp.config(['$routeProvider',
    function($routeProvider) {
        $routeProvider.
            when('/login', {
                templateUrl: 'templates/login.html',
                controller: 'loginController'
            }).
            when('/dashboard', {
                templateUrl: 'templates/dashboard.html',
                controller: 'dashboardController'
            }).
            ...

내가 노력하고를 표시 로그아웃 버튼 헤더 안에 때로드 보는 대시보드를 숨기는 경우가 그것을 로드 뷰 로그인이 보기입니다.그러기 위해서는 나에 defaultController$location 체가 제대로 추가하고 제거하는 클래스에서 로그아웃 버튼 ng-class.

거기에 하나의 문제는:$위치게 올바른 경로는 처음으로 나는 페이지를 로드하지만,변경시에 보기(에 의해 변경 $routeProvider)는 변수가 필요하지요 그래서 때,나는 실제로에 /#/dashboard 이, $location.url 에 아직도 /login.여기서 컨트롤러 코드:

controllers.controller('defaultController', ['$scope', 'ipCookie', '$location', function($scope, ipCookie, $location) {
    $scope.url = $location.url();
    ...

리스도와 함께 $window.location.hash 와 같은 결과를 제공합니다.

어떤 생각이 있으십니까?

편집:후에 받아들이 대답은 무엇 ve 에 추가 defaultController 하기 위해 작업

$scope.$on("$locationChangeSuccess", function() {
        $scope.url = $location.url();      
    });
도움이 되었습니까?

해결책

위치가 아마 업데이트에서 이후 서비스의 기본 컨트롤러로드됩니다.

할 수 있습 중 하나입 $location 서비스 범위를 결정을 내 템플릿에서 그것을 기반으로(그 다음 그것이 자동으로 감시 및 재평가)또는 당신은 수리를 듣고 $locationChangeSuccess 이벤트입니다.

주입하는 경우,당신은 단순히 $scope.location = $location 다음 같은 것을 사용 <a ng-hide="location.path() != '/something'">.

$location 방송 $locationChangeSuccess 루트 범위에,그래서 당신은 당신를 들을 수 있어야에서 어느 범위에 사용할 수 있습니다: $scope.$on( "$locationChangeSuccess", function() { /* do something */ } );

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top