라우팅 중에 두 페이지가 컨트롤러를 공유할 수 있습니까?
그렇다면 컨트롤러는 독립적인 범위인가요 아니면 공개 범위인가요? 예를 들어 컨트롤러에서 i 변수를 선언하고 페이지 a에서 i 값을 변경하면 b로 라우팅할 때 페이지가 열리면 i 값도 그에 따라 변경되나요?
i
认证0级讲师
저도 최근에 Anglejs를 배우고 있습니다. 포스터에서 언급한 문제에 관해 간단한 시연을 해볼 수 있습니다.
다음과 같은 HTML 구조, 다른 보기, 동일한 컨트롤러를 가지고 있습니다
컨트롤러 코드의 일부:
먼저 표시 버튼을 클릭하면 출력 결과는 다음과 같습니다.
그런 다음 3으로 변경 버튼을 클릭하고 다시 표시 버튼을 클릭하면 결과는 다음과 같습니다.
이 실험을 통해 동일한 컨트롤러이지만 실제로는 두 개의 스코프가 전혀 관련이 없는 스코프임을 알 수 있습니다. 범위 구조도 dom 구조에 해당하는 트리 모양입니다. 위의 html 구조에는 두 가지 범위가 있습니다. 또 다른 명백한 예를 살펴보겠습니다:
콘솔을 보세요 결과가 두 번 인쇄되어 메서드가 두 번 실행되었음을 나타냅니다. 범위가 공유되면 두 번 실행되지 않습니다.
요약하자면, 컨트롤러에서 변수 i를 선언하고 페이지 a에서 i 값을 변경하면 페이지 b로 라우팅할 때 i 값은 변경되지 않습니다.
도움이 되길 바랍니다!
이런 식으로 사용하는 게 이상하네요. 이렇게 사용하는 것이 가능한지 잘 모르겠습니다
개인적으로 일반적인 사용법은 다음과 같습니다. 한 페이지, 하나의 컨트롤러 컨트롤러 간에 변수와 메서드를 공유해야 하는 경우 각도에서 서비스를 구축하여 변수와 메서드를 저장하면 됩니다. 우리가 작성한 서비스를 삽입하기만 하면 됩니다
공식 문서에는 서비스가 코드를 공유하는 데 사용된다고 명시되어 있습니다. 서비스 Angular 서비스는 DI(종속성 주입)를 사용하여 함께 연결된 대체 가능한 개체입니다. 서비스를 사용하여 앱 전체에서 코드를 구성하고 공유할 수 있습니다.
https://docs.angularjs.org/guide/services
경로를 전환한 후 컨트롤러의 수명 주기가 종료되고 현재 $scope 및 하위 범위가 종료됩니다. 여러 컨트롤러 간에 데이터를 공유해야 하는 경우 서비스를 이용할 수 있습니다.
$scope
저도 최근에 Anglejs를 배우고 있습니다. 포스터에서 언급한 문제에 관해 간단한 시연을 해볼 수 있습니다.
다음과 같은 HTML 구조, 다른 보기, 동일한 컨트롤러를 가지고 있습니다
으아악컨트롤러 코드의 일부:
으아악먼저 표시 버튼을 클릭하면 출력 결과는 다음과 같습니다.
그런 다음 3으로 변경 버튼을 클릭하고 다시 표시 버튼을 클릭하면 결과는 다음과 같습니다.
이 실험을 통해 동일한 컨트롤러이지만 실제로는 두 개의 스코프가 전혀 관련이 없는 스코프임을 알 수 있습니다.
으아악범위 구조도 dom 구조에 해당하는 트리 모양입니다. 위의 html 구조에는 두 가지 범위가 있습니다.
또 다른 명백한 예를 살펴보겠습니다:
콘솔을 보세요
결과가 두 번 인쇄되어 메서드가 두 번 실행되었음을 나타냅니다. 범위가 공유되면 두 번 실행되지 않습니다.
요약하자면, 컨트롤러에서 변수 i를 선언하고 페이지 a에서 i 값을 변경하면 페이지 b로 라우팅할 때 i 값은 변경되지 않습니다.
도움이 되길 바랍니다!
이런 식으로 사용하는 게 이상하네요. 이렇게 사용하는 것이 가능한지 잘 모르겠습니다
개인적으로 일반적인 사용법은 다음과 같습니다.
한 페이지, 하나의 컨트롤러
컨트롤러 간에 변수와 메서드를 공유해야 하는 경우 각도에서 서비스를 구축하여 변수와 메서드를 저장하면 됩니다. 우리가 작성한 서비스를 삽입하기만 하면 됩니다
공식 문서에는 서비스가 코드를 공유하는 데 사용된다고 명시되어 있습니다.
서비스
Angular 서비스는 DI(종속성 주입)를 사용하여 함께 연결된 대체 가능한 개체입니다. 서비스를 사용하여 앱 전체에서 코드를 구성하고 공유할 수 있습니다.
https://docs.angularjs.org/guide/services
경로를 전환한 후 컨트롤러의 수명 주기가 종료되고 현재
$scope
및 하위 범위가 종료됩니다.여러 컨트롤러 간에 데이터를 공유해야 하는 경우 서비스를 이용할 수 있습니다.