2016-07-20 5 views
1

컨트롤러를 공유하는보기가 두 개 있다고 가정 해 봅시다. 두보기 모두 ng-route service을 사용합니다. 하나의보기에서 범위 변수가 변경된 후 두 번째보기로 전환하면 두 번째보기가 어떻게 업데이트되지 않습니까?

Example : 컨트롤러의 변수는 = "hello"입니다. 두 변수 모두에서이 변수를 출력한다. view one에서 나는 라고하는 변수를 업데이트하는 onclick을 가지고 있습니다. 그 잘 작동하지만 이벤트 후 난 전환보기 및 두 번째보기 "hello" 여전히 출력됩니다. 이것들을 공유하는 방법이 있습니까? 그렇지 않다면 데이터를 공유하는 기술은 무엇입니까?

+0

는 여기에 몇 가지 코드를 게시하거나 jsfiddle – neuronet

+0

@neuronet이 바이올린 내 각 코드를 nj51 @ 모두보기 https://jsfiddle.net/t2ouuw72/ – nj51

+0

모두 보여줍니다 좋은 방법 AngularJS와 데이터를 공유하는 모델의 사용이다. 변수 정보를 모델에 저장하고 필요할 때마다 다른 장소에 반영 할 수 있습니다. –

답변

0

AngularJS가 단일 페이지 응용 프로그램 (SPA) 용으로 설계되었으므로이 동작이 프레임 워크에서 지원되지 않음을 알려드립니다.

각 컨트롤러는 동일한 컨트롤러를 공유하지만 서로 다른 scope을 가지고 있습니다. 따라서 한 뷰의 범위 변수를 업데이트해도 다른 뷰는 업데이트되지 않습니다.

이 동작을 원할 경우 $on을 사용하여 이벤트를 청취하는 것이 좋습니다.

또한 코드에 콘트롤러에 아무런 조건없이 하드 코드 된 $scope.test = 'hi';이 있는데, 이는 동일한 컨트롤러를 공유하는 두보기 모두에 반영되는 이유입니다.

+0

오, 확인. 나는 많은 애플 리케이션이 그것이 하나 이상의 페이지처럼 느껴지도록 다른 견해를 가지고 있기 때문에 혼란 스러웠다. 내 프로젝트는 직원들이 다양한 변화를 도울 수있는 앱이 될 것입니다. 두 개의 주요 페이지는 입니다. 1. 선택할 수있는 교대를 표시 할 수있는 장소 2. 사용자가 선택한 교대를 보여주는 페이지 각도가 잘못 될 수 있습니까? – nj51

+0

아니요, 각색이 효과가 있습니다. SPA가 무엇인지 혼동 스러울 수 있습니다. 정의 [here] (http://stackoverflow.com/a/19501759/6138713)를 참조하십시오. 간단히 말해, 다른 뷰 (페이지) 나 컨트롤러를 업데이트하려면'$ broadcast'와'$ on'을 사용하십시오. –

0

컨트롤러 당 하나의보기를 갖는 것이 가장 좋습니다. 귀하의 사이트 규모가 커지면 하나의 컨트롤러로 여러 템플릿/뷰를 관리하는 것이 매우 어려워집니다.

서비스는 컨트롤러간에 데이터를 공유하는 방법입니다.

예를 들어, 삽입 한 서비스에서 업데이트 된 변수를 가져 오는 각 뷰가 렌더링 될 때 호출되는 활성화 함수를 가질 수 있습니다. 핥기 기능은 변수를 서비스에 저장하여 컨트롤러간에 사용할 수있게해야합니다.