2016-10-25 3 views
0

이 질문이 나를 머리에 쥐어 짜게하려고하지는 않지만, 나는 인 것처럼이 (finger 밀접하게 함께) 멀리 머리에 펀치에서 나는 앞으로 가서, 내 자존심을 삼켜 어쨌든 물어 생각.Angular.js : 여러 부분 중 하나를 볼 때 색인 파일에서 div를 숨기기

자기가 고백 한 초보자로서 방문자가 해당 페이지의 특정 부분을 호출하면 내 색인 파일 (내 레이아웃 페이지)에 div가 숨기는 문제가 있습니다.

나는 약 55 개의 부분 (스코프 크립은 멋진 것임)을 가지고 있으며, 문제가되는 div는 12 개에 나타나서는 안된다. 여기

내 마크 업입니다 :

<div ng-show="somename" id="somename" ng-controller="somenameCtrl"> 
         <div ng-include="'templates/somename.html'"></div> 
        </div> 

여기 내 컨트롤러 :이 앞으로 가장 간단한 방법이 될 것이라고 생각

app.controller('somenameCtrl', function($scope, $route, $location) { 

    $scope.$on('$routeChangeSuccess', function() { 
     var path = $location.path(); 
     console.log(path); 
     $scope.somename = true; 
     if (path === '/thatpage') { 
     $scope.somename = true; 
     } else if (path === '/thispage') { 
     $scope.somename = false; 
    } 
}); 
}); 

,하지만 지금은 (한 적은 확신 앞에서 언급 한 것처럼) 나는 인덱스 파일에서 div를 숨기는 부분적인 부분이있다. 분명히 div가 'thispage'에 표시되지 않고 'thatpage'에 올바르게 표시됩니다 ('thispage'이외의 부분은 호출됩니다.)

그러나 'thispage2'페이지에는 div를 표시하지 않아도됩니다. -> '이 페이지 12'를 읽고 다른 모든 것에 표시해 둡니다. 어떻게 할 수 있는지에 대한 아이디어는 무엇입니까?

도움이 될만한 도움이 될 것입니다. 불명확 한 점이 있으면 언제든지 알려주세요. 최선을 다할 것입니다. 큰 선명도를 제공 할 수 있습니다.

+0

어떤 형태의 라우팅을 사용하고 있습니까? nRoute 또는 uiRouter? – nikjohn

답변

2

을 각도에서이 일을 여러 가지 방법이 있습니다. 너무 많이.

을 내가 믿고있어 당신은 UI 라우터를 사용 또는 ng-router. 두 라우터는 모두 resolve 메서드를 가지고 있습니다.

.when('/someRoute', { 
    templateUrl: '...', 
    controller: '...', 
    resolve: { 
     SomeName: false; 
    } 
    }) 

을 그리고 컨트롤러이 포함됩니다 : 당신이 정의하는 각 경로/상태에서, 당신이 그렇게 같은 SomeName 변수에 전달할 수 있습니다

.controller(function(SomeName, $scope) { 
    $scope.somename = SomeName || false; 
} 

이 방법, 당신은 SomeName 변수를 정의해야합니다 은 실제로있는 경로에서만입니다. 정의되지 않은 경우는 false로 기본 것이다, 그래서 당신은 모든 노선에 그것을 정의 할 필요가 없습니다

물론,뿐만 아니라이 일을하는 다른 방법이있다, 그러나 이것은 가장 깨끗한 방법처럼 날 것으로 보인다

+0

고맙습니다. @nikjohn - 지금은 금방 갈 것입니다. 당신은 꽤 정확합니다, 나는 ngRoute를 사용하고 있습니다. – TalliSep