종속성 리소스로서 컨트롤러에 서비스를로드하는 방법은 다른 서비스에로드하는 방법과 매우 유사합니다.
JavaScript는 동적 언어이므로 DI는 정적 유형 언어와 같이 정적 유형을 통해 어떤 서비스를 주입 해야하는지 알 수 없습니다. 따라서 주입 해야하는 서비스 이름을 포함하는 $ 문자열 배열 인 $ 주입 속성을 통해 서비스 이름을 지정해야합니다. 서비스 ID 순서의 중요성 : 공장 방법의 매개 변수 순서는 배열의 서비스 순서와 일치합니다. 공장 메소드의 매개 변수 이름은 중요하지 않지만 평소와 같이 서비스 ID와 하나씩 일치하며 그렇게하는 이점은 아래에서 설명합니다.
1. 명시 적 의존성 주입
mycontroller ($ scope, $ loc, $ log) {$ scope.firstMethod = function () {// $ location service $ loc.sethash (); }; $ scope.secondMethod = function () {// $ log service $ log.info ( '…')};} myController. $ inject = [ '$ location', '$ log'];예:
<! docType html> <html lang = "zh-cn"ng-app = "mainApp"> <head> <meta charset = "utf-8"> <title> Explicit-Inject-service </title> </head> <body> <div ng-controller = "mycontroller"> inputy type = "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 ($ prude) {$ provery.Furedory ( "Notify", [ "$ wind if (msgs.length == 3) {function () {msgs.join ( "/n"); msgs = [];}, 10); 함수 myController ($ s, $ noti) {// 이것은 컨트롤러 종속 서비스입니다. 이 명시 적 방법을 통해 매개 변수 이름은 무작위로 채울 수 있지만 순서는 $ s.msgs = []에 해당해야합니다. $ s.savemsg = function () {this.msgs.push (this.msg); $ noti (this.msg); this.msg = ""; }; } // 주입 된 물건을 지정 // http://www.cnblogs.com/lclao/archive/2012/10/16/2725317.html mycontroller. $ inject = [ '$ scope', 'notify']; </body> </html> </html>에서 예제를 참조 할 수 있습니다.2. 암시 적 의존성 주입
매개 변수 이름으로 종속성을 결정할 수있는 각도 DI의 새로운 기능. 위의 예제를 다시 작성하여 $ Window, $ SCOPE를 암시 적으로 주입하고 서비스에 알리는 방법을 보여 드리겠습니다.
예:
<! docType html> <html lang = "zh-cn"ng-app = "mainApp"> <head> <meta charset = "utf-8"> <title> 암시 적-인젝트 서비스 </title> </head> <body> <div ng-controller = "mycontroller"> input type = "ng-model ="ng-model = "ng-model" 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 ($ prude) {$ provery.fordory ( "notify", function ($ window, $ timeout) {// 서비스는 서비스에 의존하고, 암시 적으로 의존하고, 이름은 동일한 var msgs = []; return function (msg) {msgs.push (msg); if (msgs.length == 3) {$ timeout (function (msgs.length =) {$ timeout (msgs.length == 3) {return 함수입니다. $ window.Alert ( "/n"); 알림 (this.msg);이것은 매우 편리하지만 코드를 압축하고 난독 화 해야하는 경우 매개 변수 이름이 변경 될 수 있습니다. 이 경우, 우리는 여전히 명백한 종속성 선언을 사용해야합니다.
위의 것은 컨트롤러에 서비스를 주입하는 AngularJS에 대한 정보입니다. 우리는 향후 관련 정보를 계속 추가 할 것입니다. 이 사이트를 지원 해주셔서 감사합니다!