2014-11-05 2 views
0

나는 이런 상황에 처해있다. 두 개의 탭이있는 웹 페이지가있다. 이 탭들은 angularjs에서 ng-view를 사용해야합니다. 이러한 탭의 특성은 C# (ref 키워드)에서 변수를 참조하는 것과 같이 참조에서 동일한 변수를 사용해야한다는 것입니다.ng-view를 사용할 때보기간에 변수를 참조로 유지할 수 있습니까?

당신은 내가 무슨 뜻인지 알고 목적이 데모의 섹션을 사용하여 확인할 수 있습니다

<h3>Using object:</h3> <div class="example"> <img class="mainImg" ng-src="{{mainImg.url}}" /> <p>This is the parent scope with the main image.</p> <p>$scope.mainImg.url == {{mainImg.url}}</p> <div class="thumbs"> <p>Thumbs generated with ng-repeat, with ng-click setting <strong>$scope.mainImg.url</strong> (click on them to see what happens):</p> <div class="thumbDiv" ng-repeat="img in images"> <img class="thumb" ng-src="{{img}}" ng-click="mainImg.url = img" /> <p>This is a child scope generated by ng-repeat.</p> <p>$scope.mainImg.url == {{mainImg.url}}</p> </div> </div> </div> 

http://plnkr.co/edit/zZfUQN?p=preview

그래서, 메인 페이지는 메인 컨테이너와 탭은 차일입니다. 자식간에 동일한 값을 사용하기 위해 해당 자식을 참조로 사용하는 방법. 참조 변수가 아이에 의해 수정 될 수 있으며, 다른 사람의 차일 사이에서 유지해야하는 값이 필요합니다 : -

편집

나는 매우 중요한 일을 언급하는 것을 잊지. 당신의 도움에 대한 감사,

카린은

+2

Clint의 답변에서와 같이'$ rootScope'를 사용하면 문제가 없습니다. 하지만 원격으로 복잡한 일이라면 공유 상태를 유지하는 서비스를 만들 것입니다 (값이 ajax를 통해 검색되면 라우터에서 resolve를 사용하십시오). –

답변

1

나는 당신이 이후 $rootScope하는지 생각합니다. 범위도 상속되므로 부모 범위에서 무언가를 정의하고 하위 범위에서 무언가를 재정의하지 않으면 해당 범위에 액세스 할 수 있습니다.

function MainController($scope, $rootScope) { 
    $rootScope.sharedVar = 'Hello'; 
} 

function Child1Controller($scope, $rootScope) { 
    //access $rootScope.sharedVar; 
} 

function Child2Controller($scope, $rootScope) { 
    //access $rootScope.sharedVar; 
} 

편집 앤서니 추가 언급 한 바와 같이, 당신은 또한 서비스를 생성하고 공유 가치를 필요로하는 어떤 컨트롤러에 주입 할 수있다.