在看一個$injector用法的demo,下面是demo的所有程式碼:
<!DOCTYPE html> <html lang="en" ng-app="a4_6"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" src="../bower_components/angular/angular.min.js"></script> </head> <body> <h1>has和get方法的示例</h1> <p ng-controller="c4_6"> <!--视图组件--> </p> </body> <script type="text/javascript"> var a4_6 = angular.module('a4_6',[]) .factory('$custom', function(){ return { print: function(msg){ console.log(msg); } }; }); var injector = angular.injector(['a4_6','ng']); var has = injector.has('$custom'); console.log(has); if(has){ var custom = injector.get('$custom'); custom.print("控制台输出任意的内容"); } a4_6.controller('c4_6',['$scope','$custom', function($scope,$custom){ //控制器代码 }]); </script> </html>
var injector = angular.injector(['a4_6','ng']);
這句話裡的ng是什麼意思啊?
指核心的‘ng’module,也即angular核心模組var injector = angular.injector(["ng"])是創建自己的$injector而不是應用啟動時自動建立的$injector。自己建立$injector你需要傳遞一個module列表,上面範例有'a4_6','ng'兩個module。如果你需要使用Angular核心中的任何service的話你必須明確的指明ng module。 angular.module方法會假設你對ng module有依賴,並會悄悄的為你的依賴列表添加”ng”,而injector函數對於依賴module則不會做任何的假設。