angular.js - angular路由的控制器
PHP中文网
PHP中文网 2017-05-15 16:50:44
0
3
781

路由时两个页面能公用一个控制器吗,比如

javascript    .state('a', {
        ...
        controller : 'aaaController'
    })
    .state('b', {
        ...
        controller : 'aaaController'
    })

如果行的话,控制器是独立的作用域还是公用的,比如说我在控制器里声明了个变量i,在a页面中改变了i的值,当我路由到b页面时,i的值会跟着变吗

PHP中文网
PHP中文网

认证0级讲师

모든 응답(3)
伊谢尔伦

저도 최근에 Anglejs를 배우고 있습니다. 포스터에서 언급한 문제에 관해 간단한 시연을 해볼 수 있습니다.

다음과 같은 HTML 구조, 다른 보기, 동일한 컨트롤러를 가지고 있습니다

으아악

컨트롤러 코드의 일부:

으아악

먼저 표시 버튼을 클릭하면 출력 결과는 다음과 같습니다.

그런 다음 3으로 변경 버튼을 클릭하고 다시 표시 버튼을 클릭하면 결과는 다음과 같습니다.

이 실험을 통해 동일한 컨트롤러이지만 실제로는 두 개의 스코프가 전혀 관련이 없는 스코프임을 알 수 있습니다.
범위 구조도 dom 구조에 해당하는 트리 모양입니다. 위의 html 구조에는 두 가지 범위가 있습니다.
또 다른 명백한 예를 살펴보겠습니다:

으아악

콘솔을 보세요

결과가 두 번 인쇄되어 메서드가 두 번 실행되었음을 나타냅니다. 범위가 공유되면 두 번 실행되지 않습니다.

요약하자면, 컨트롤러에서 변수 i를 선언하고 페이지 a에서 i 값을 변경하면 페이지 b로 라우팅할 때 i 값은 변경되지 않습니다.

도움이 되길 바랍니다!

我想大声告诉你

이런 식으로 사용하는 게 이상하네요. 이렇게 사용하는 것이 가능한지 잘 모르겠습니다

개인적으로 일반적인 사용법은 다음과 같습니다.
한 페이지, 하나의 컨트롤러
컨트롤러 간에 변수와 메서드를 공유해야 하는 경우 각도에서 서비스를 구축하여 변수와 메서드를 저장하면 됩니다. 우리가 작성한 서비스를 삽입하기만 하면 됩니다

공식 문서에는 서비스가 코드를 공유하는 데 사용된다고 명시되어 있습니다.
서비스
Angular 서비스는 DI(종속성 주입)를 사용하여 함께 연결된 대체 가능한 개체입니다. 서비스를 사용하여 앱 전체에서 코드를 구성하고 공유할 수 있습니다.

https://docs.angularjs.org/guide/services

伊谢尔伦

경로를 전환한 후 컨트롤러의 수명 주기가 종료되고 현재 $scope 및 하위 범위가 종료됩니다.
여러 컨트롤러 간에 데이터를 공유해야 하는 경우 서비스를 이용할 수 있습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!