依存関係リソースとしてサービスをコントローラーにロードする方法は、他のサービスにロードする方法と非常に似ています。
JavaScriptは動的な言語であるため、DIは静的タイプ(静的な型言語など)を介してどのサービスを注入するかを把握できません。したがって、$ Injectプロパティを介してサービス名を指定する必要があります。これは、注入する必要があるサービス名を含む文字列の配列です。サービスID注文の重要性:工場メソッドのパラメーターの順序は、配列のサービス順序と一致しています。工場メソッドのパラメーター名は重要ではありませんが、いつものようにサービスIDを1つずつ一致させ、そうすることの利点については以下で説明します。
1。明示的な依存関係注射
function 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> expricit-inject-service </title> </head> <body> <body> <div ng-controller = "mycontroller"> <入力タイプ= " ng-click = "savemsg()"> save msg </button> <ul> <li ng-repeat = "msgs ings"> {{msg}} </li> </ul> </div> <Src = "../ angular-1.0.1.js" type = "text/javascript"> </script> <"> <> <> <> <> <> < angular.module( "mainapp"、[]、function($ rofit){$ sultion.factory( "notify"、["$ window"、 "$ timeout"、function(win、timeout){//これはサービス依存サービスです。 if(msgs.length == 3){function(){win.alert( "/n"); msgs = [];}、10); function 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'、 '];2。暗黙の依存性注入
依存関係をパラメーター名で決定できるようにするAngular DIの新機能。上記の例を書き直して、$ウィンドウ、$スコープを暗黙的に注入し、サービスに通知する方法を示しましょう。
例:
<!doctype html> <html lang = "zh-cn" ng-app = "mainapp"> <head> <head> <meta charset = "utf-8"> <title> inclicit-inject-service </ittitle> </head> <body> <body> <div ng-controller = "mycontroller"> <入力タイプ= " ng-click = "savemsg()"> save msg </button> <ul> <li ng-repeat = "msgs ings"> {{msg}} </li> </ul> </div> <Src = "../ angular-1.0.1.js" type = "text/javascript"> </script> <"> <> <> <> <> <> < angular.module( "mainapp"、[]、function($ rofit){$ sultion.factory( "notify、$ timeout){//サービスはサービスに依存します。 $ window( "/n"); notify(this.msg);これは非常に便利ですが、コードを圧縮して難読化する必要がある場合、パラメーター名が変更される可能性があります。この場合、依存関係の明示的な宣言を使用する必要があります。
上記は、AngularJがサービスをコントローラーに注入することに関する情報です。今後も関連情報を追加し続けます。このサイトへのご支援ありがとうございます!