>  기사  >  웹 프론트엔드  >  서비스 없이 AngularJS UI-Router에서 상태 간에 $scope 데이터를 공유하는 방법은 무엇입니까?

서비스 없이 AngularJS UI-Router에서 상태 간에 $scope 데이터를 공유하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-23 05:16:09365검색

How to Share $scope Data Between States in AngularJS UI-Router Without Services?

AngularJS UI-Router에서 상태 간 $scope 데이터 공유

상태 관리를 위해 UI-Router를 활용하는 AngularJS 애플리케이션에서 다음이 발생할 수 있습니다. 상위 상태와 하위 상태 간에 $scope 데이터를 공유해야 합니다. 서비스나 복잡한 감시자를 사용하지 않고 어떻게 이를 달성할 수 있습니까?

뷰 계층 상속 활용

AngularJS UI-Router는 하위 뷰가 상위 뷰 내에 중첩되어 있습니다. 이는 하위 상태의 템플릿이 상위 보기의 템플릿 내에 중첩되어야 함을 의미합니다.

예를 들어 다음 상태 정의를 고려하십시오.

.state("main", {
 controller:'mainController',
 url:"/main",
 templateUrl: "main_init.html"
})  
.state("main.1", {
 controller:'mainController',
 parent: 'main',
 url:"/1",
 templateUrl: 'form_1.html'
})  
.state("main.2", {
 controller:'mainController',
 parent: 'main',
 url: "/2",
 templateUrl: 'form_2.html'
})  

이 시나리오에서 하위 상태("form_1.html" 및 "form_2.html")는 상위 상태("main_init.html")의 보기 내에 중첩됩니다. 이를 통해 상위 상태에서 하위 상태로 $scope 속성을 상속할 수 있습니다.

참조 유형 및 점 표기법 사용

데이터가 공유되도록 하려면 다음을 수행합니다. 점 표기법을 사용하여 상위 컨트롤러의 $scope에 참조 유형을 정의하는 것이 중요합니다. 예를 들면 다음과 같습니다.

controller('mainController', function ($scope) {
  $scope.Model = $scope.Model || {Name : "xxx"};
})

점 표기법을 사용하여 $scope.Model이 참조 유형임을 보장합니다. 하위 상태에서 액세스하면 상위 상태에서 생성된 $scope.Model과 동일한 인스턴스가 되어 데이터 공유가 용이해집니다.

예제에서 질문에 제공된 경우 기본 컨트롤러 및 하위 상태는 범위 상속을 위해 올바르게 설정됩니다. 문제는 점 표기법을 부적절하게 사용하는 데 있습니다. $scope.Model.Name을 참조하도록 하위 상태의 ng-model을 수정하면 데이터 공유가 설정됩니다.

위 내용은 서비스 없이 AngularJS UI-Router에서 상태 간에 $scope 데이터를 공유하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.