2016-08-19 1 views
1

AngularJS 프로젝트에서 작업 중이며 중첩 된보기를 생성하는 데 ui-router을 사용하고 있습니다. 여러보기를 생성하는 한 상태가 있습니다.AngularJS - 동일한 상태의 ui-router에 속한보기 간 통신

내 질문은 : 어떻게 의사 소통을하고 뷰간에 데이터를 보낼 수 있습니까? 나는 많은 봤 거든 난 아직도 그 문제에 갇혀있다. $rootscope, $brodcast$on을 사용했지만 최선의 방법이라고 생각하지 않습니다.

도움이 필요하십니까? 고맙습니다.

+0

사용하는 공장이나 서비스 –

답변

1

중첩 된보기간에 데이터를 전달하는 것은 다른 두보기간에 데이터를 전달하는 것과 다를 바 없습니다. 구축 할 두 가지 기본 시나리오가 있습니다. 이러한 뷰가 동일한 컨트롤러를 사용하는 경우 문제는 전혀 문제가되지 않으며 동일한 뷰를 두 뷰에 모두 전달할 수 있습니다. 보기가 다른 컨트롤러를 사용하는 경우 실제로 문제는보기에 관계없이 두 컨트롤러간에 데이터를 전달하는 방법입니다.

두 개 이상의 컨트롤러간에 데이터를 전달하는 것은 팩토리와 같은 공급자에 데이터를 저장 한 다음 데이터에 액세스해야하는 것보다 각 컨트롤러에 대한 종속성으로 해당 팩토리를 포함시켜 쉽게 수행 할 수 있습니다. 여기

간단한 예이다

보기 1 (경로 congif 통해 CTRL1을 할당)

<div> 
    <h1>View 2</h1> 
    <p>{{data.value}}</p> 
</div> 

컨트롤러 1

myApp.controller('Ctrl1', ['$scope', 'myFactory', function($scope, myFactory){ 
    $scope.data = myFactory.data; 
}]); 

보기 2 (할당 CTRL2 경로 congif를 통해)

<div> 
    <h1>View 2</h1> 
    <p>{{data.value}}</p> 
</div> 

컨트롤러 2

myApp.controller('Ctrl2', ['$scope', 'myFactory', function($scope, myFactory){ 
    $scope.data = myFactory.data; 
}]); 

그리고 마지막으로 당신의 공장

myApp.factory('myFactory', function(){ 
    return { 
     data: { 
      value: 'some data' 
     } 
    } 
});