Angular는 많은 유용한 서비스를 제공하지만 일부 특별 응용 프로그램에서는 사용자 정의 서비스를 작성하는 것이 유용하다는 것을 알게 될 것입니다. 이 작업을 수행하려면 먼저 모듈에 서비스 팩토리 메소드를 등록해야합니다. 모듈에 직접 통과 할 수있는 모듈을 통해 전달 될 수 있습니다.
모든 각도 서비스는 DI (//www.vevb.com/article/91775.htm)에 관여하며 Angular DI 시스템 (인젝터)의 이름 (ID)에 자신을 등록하거나 다른 공장 방법의 기존 서비스에 대한 종속성을 선언 할 수 있습니다.
1. 서비스 등록
서비스를 등록하려면 모듈이 있고이 서버를이 모듈의 일부로 만들어야합니다. 그런 다음 모듈 API 또는 모듈 구성 기능에 서비스를 등록 할 수 있습니다. 다음 의사 코드는이 두 가지 등록 방법을 보여줍니다.
Angular.Module API 사용 :
var myModule = Angular.Module ( 'myModule', []); myModule.Factory ( 'serviceId', function () {var someservice; // factory method body, build someservice return someservice;});$ 서비스 제공 서비스 :
Angular.Module ( 'myModule', [], function ($ prose) {$ prose.FORTORY ( 'serviceId', function () {var someservice; // factory method body, build someservice return someservice;});});서비스 인스턴스를 등록 할 필요가 없으며 대신 공장 메소드가 호출 될 때 인스턴스화됩니다.
2. 종속성
서비스는 의존적 일뿐 만 아니라 자체 종속성도 있습니다. 공장 방법의 매개 변수에 종속성을 지정할 수 있습니다. 읽기 (//www.vevb.com/article/91775.htm) 각도, 배열 태그의 사용 및 DI 선언을보다 간결하게 만드는 $ 주입 속성에 대한 자세한 내용. (각도의 DI 및 배열 표기법 사용 및 $ 주입 속성 사용에 대한 자세한 내용을 읽으십시오.
다음은 매우 간단한 서비스 예입니다. 이 서비스는 $ 창 서비스 (공장 메소드 매개 변수를 통해 전달됨)에 의존하며 하나의 방법 만 있습니다. 이 서비스는 단순히 모든 알림을 저장합니다. 세 번째 알림 후에이 서비스는 Window.Alert를 통해 모든 알림을 표시합니다.
<! docType html> <html lang = "zh-cn"ng-app = "mainApp"> <head> <meta charset = "utf-8"> <title> services </title> </head> <body> <div ng-controller = "myController"> input type = "text"ng-model = "msg"/>> <버튼. ng-click = "seaMemsg ()"> 저장 msg </button </button> <ul> <li ng-repeat = "msg in msgs"> {{msg}} </li> </ul> </div> <script src = "../ angular-1.0.1.js"type = "text/javascript"> <텍스트 "> Angular.Module ( "mainApp", [], function ($ prose) {$ provery.Furedory ( "Notify", [ "$ window", "$ timeout", function (win, timeout) {var msgs = []; return function (msg) {msgs.push (msg); if (msgs.length = 3) {timeout () {) win.alert (msgs.join ( "/n")); App.Controller ( "myController", function ($ scope, notify) {$ scope.msgs = []; $ scope.saveMsg = function () {this.msgs.push (this.msg); this.msg = ";};}; </body> </html> </html>3. 각도 서비스를 인스턴스화합니다
Angular의 모든 서비스는 게으르게 인스턴스화됩니다. 이는 서비스가 다른 인스턴스화 서비스 또는 이에 의존하는 응용 프로그램 구성 요소가 의존적 일 때만 생성된다는 것을 의미합니다. 다시 말해, Angular는 서비스가 직간접 적으로 요청 될 때까지 서비스를 인스턴스화하지 않습니다.
4. 싱글 톤으로서의 서비스
마지막으로, 우리는 모든 각도 서비스가 싱글 톤 응용 프로그램이라는 것을 알아야합니다. 이는 각 인젝터가 주어진 서비스의 하나의 인스턴스를 가지고 있음을 의미합니다. Angular는 글로벌 상태를 파괴하는 것이 매우 성가 시므로 각각 지정된 서비스의 인스턴스를 갖도록 여러 인젝터를 만들 수 있습니다. 테스트의 강력한 수요를 제외하고는 일반적으로 그러한 요구가 거의 없습니다.
위는 Angular 서비스에 대한 정보입니다. 우리는 향후 관련 정보를 계속 추가 할 것입니다. 이 사이트를 지원 해주셔서 감사합니다!