Angularjs 의존 주입

2905 단어 AngularJS
객체는 일반적으로 다음과 같은 세 가지 방법으로 종속성에 대한 제어권을 얻을 수 있습니다.
  • 내부에 의존 만들기;
  • 전역 변수를 통해 인용하기;
  • 필요한 곳에 매개 변수를 통해 전달
  • 의존 주입은 세 번째 방식을 통해 이루어진다.예:
    function SomeClass(greeter) {
    this.greeter = greeter;
    }
    SomeClass.prototype.greetName = function(name) {
    this.greeter.greet(name);
    };

    SomeClass는 실행할 때 내부의greeter에 접근할 수 있으나,greeter에 대한 인용을 얻는 데는 관심이 없습니다.greeter 실례에 대한 인용을 얻기 위해, SomeClass의 창설자는 의존 관계를 구축하고 전달하는 것을 책임진다.
    이상의 이유로 AngularJS는 $injetor(주입기 서비스)를 사용하여 의존 관계의 조회와 실례화를 관리합니다.사실상 $injetor는 응용 모듈, 명령어, 컨트롤러 등을 포함한 AngularJS의 모든 구성 요소를 실례화하는 것을 책임진다.
    예를 들어 아래의 이 코드.이것은 하나의 모듈과 하나의 컨트롤러를 설명하는 간단한 응용 프로그램입니다.
    angular.module('myApp', [])
    .factory('greeter', function() {
    return {
    greet: function(msg) {alert(msg);}
    }
    })
    .controller('MyController',
    function($scope, greeter) {
    $scope.sayHello = function() {
    greeter.greet("Hello!");
    };
    });

    AngularJS가 이 모듈을 실례화하면 greeter를 찾아 참조를 자연스럽게 전달합니다.
    <div ng-app="myApp">
    <div ng-controller="MyController">
    <button ng-click="sayHello()">Hello</button>
    </div>
    </div>

    내부적으로 AngularJS의 처리 과정은 다음과 같습니다.
    //  
    var injector = angular.injector(['ng', 'myApp']);
    //  $controller :var $controller = injector.get('$controller');
    var scope = injector.get('$rootScope').$new();
    //  , AngularJS 
    var MyController = $controller('MyController', {$scope: scope})

    좋은 웹페이지 즐겨찾기