angular.module 詳解
AngularJS 模塊
模塊包含了主要的應用代碼。
一個應用可以包含多個模塊,每一個模塊都包含了定義具體功能的代碼。
可以將module理解成一個容器,可以往其中放入controllers、services、filters、directives等應用的組成部分。
創建模塊
<div ng-app="myApp">...</div>
<script>
var app = angular.module("myApp", []);
</script>
AngularJS允許我們使用angular.module()方法來聲明模塊。
angular.module(‘myApp‘, []);
這個方法相當於AngularJS模塊的setter方法,是用來定義模塊的。
參數
"myApp" 參數對應執行應用的 HTML 元素。
在模塊定義中 [] 參數用於定義模塊的依賴關系。
中括號[]表示該模塊沒有依賴,如果有依賴的話會在中括號寫上依賴的模塊名字。
調用這個方法時如果只傳遞一個參數,就可以用它來引用模塊。例如,可以通過以下代碼來引用myApp模塊:
angular.module(‘myApp‘)
這個方法相當於AngularJS模塊的getter方法,用來獲取對模塊的引用。
module導入
上面的例子中,可以發現.module方法第二個參數是一個空數組,這個空數組是為了指定在此module中需要用到哪些其他的modules。
現在,我們定義另一個module,然後將其導入到我們定義好的名為myApp的module中:
angular.module(‘myApp.services‘, [])
.factory(‘testFactory‘, function(){
return {
Hello: function(){
return "Hello World!";
}
}
});
可以看到,我們將此module命名為myApp.services並且為其定義了一個factory。註意到首行最後沒有分號。
現在,將我們新定義的module導入到第一個module裏:
angular.module(‘myApp‘, [‘myApp.services‘]);
我們需要做的只是,將module使用引號包裹放入到.module方法第二個參數的空數組裏面,多個modules使用逗號隔開。
現在我們就可以使用第二個module裏的方法了:
angular.module(‘myApp‘, [‘myApp.services‘])
.run(function(testFactory){
var hello = testFactory.Hello();
console.log(hello);
});
控制臺輸出:Hello World!
添加控制器
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
$scope.firstName = "John";
$scope.lastName = "Doe";
});
添加指令
var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
return {
template : "我在指令構造器中創建!"
};
});
不同module間的依賴註入
第一個module裏定義一個factory
angular.module(‘myApp1‘, [])
.factory(‘Chats‘, function() {
return{
all: function() {
return ‘123‘;
}
}
});
第二個module裏定義一個controller,在這個controller裏註入module1的factory
註:這時在頁面裏調用是不行的,要麽在[ ]裏寫入對module1的依賴[‘myApp1‘],要麽再寫一個module3同時依賴於module1和module2
angular.module(‘myApp2‘, [])
.controller(‘c2‘, function($scope, Chats) {
$scope.pp=Chats.all();
});
寫第三個module,同時依賴於module1和module2
angular.module(‘myApp3‘, [‘myApp1‘,‘myApp2‘]);
然後在頁面裏調用module3的app和module2的controller,這樣就行了
<div ng-app="myApp3" ng-controller="c2">
<h1>Hello {{pp}}</h1>
</div>
輸出結果: Hello 123
原文:https://www.jianshu.com/p/d06cf28677ca
angular.module 詳解