>웹 프론트엔드 >JS 튜토리얼 >AngularJS 컨트롤러 간에 변수를 어떻게 공유할 수 있나요?

AngularJS 컨트롤러 간에 변수를 어떻게 공유할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-12-21 05:47:09653검색

How Can I Share Variables Between AngularJS Controllers?

AngularJS 컨트롤러 간 변수 공유

문제 이해

AngularJS에서 컨트롤러는 격리된 범위이므로 변수에 직접 액세스할 수 없습니다. 다른 컨트롤러에서 선언되었습니다. 이는 여러 컨트롤러 간에 데이터를 공유할 때 문제가 될 수 있습니다.

서비스 기반 접근 방식

이 문제에 대한 일반적인 해결책 중 하나는 서비스를 사용하는 것입니다. 서비스는 애플리케이션 전체에서 공유되며 모든 컨트롤러에 주입될 수 있습니다. 공유할 데이터를 보유하고 관리하는 역할을 담당합니다.

서비스 예시:

angular.module('myApp')
  .service('sharedProperties', function () {
    var property = 'First';

    return {
      getProperty: function () {
        return property;
      },
      setProperty: function (value) {
        property = value;
      }
    };
  });

컨트롤러에서의 사용:

function Ctrl2($scope, sharedProperties) {
  $scope.prop2 = "Second";
  $scope.both = sharedProperties.getProperty() + $scope.prop2;
}

공유 데이터에 데이터 바인딩 객체

때때로 서비스 내의 객체 속성에 데이터를 바인딩하는 것이 유용할 수 있습니다. 이렇게 하면 객체에 대한 변경 사항이 객체에 바인딩된 UI 구성 요소에 전파됩니다.

객체가 있는 서비스 예:

angular.module('myApp')
  .service('sharedProperties', function () {
    var property = {
      Property1: 'First'
    };

    return {
      getProperty: function () {
        return property.Property1;
      },
      setProperty: function (value) {
        property.Property1 = value;
      }
    };
  });

컨트롤러에서의 사용법:

function Ctrl2($scope, sharedProperties) {
  $scope.prop2 = "Second";
  $scope.both = sharedProperties.getProperty() + $scope.prop2;
  sharedProperties.setProperty($scope.both); // Update service property when UI changes
}

서비스를 활용하고 데이터를 객체에 바인딩하면 다음이 가능합니다. AngularJS 컨트롤러 간에 변수를 효과적으로 공유하고 애플리케이션 전체에서 데이터 일관성을 유지합니다.

위 내용은 AngularJS 컨트롤러 간에 변수를 어떻게 공유할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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