angular.module 詳解

AngularJS 模塊
模塊包含了主要的應(yīng)用代碼。
一個應(yīng)用可以包含多個模塊,每一個模塊都包含了定義具體功能的代碼。
可以將module理解成一個容器,可以往其中放入controllers、services、filters、directives等應(yīng)用的組成部分。

創(chuàng)建模塊

<div ng-app="myApp">...</div>

<script>

var app = angular.module("myApp", []); 

</script>

AngularJS允許我們使用angular.module()方法來聲明模塊。
這個方法能夠接受兩個參數(shù),第一個是模塊的名稱,第二個是依賴列表,也就是可以被注入到模塊中的對象列表。

angular.module('myApp', []);

這個方法相當(dāng)于AngularJS模塊的setter方法,是用來定義模塊的。

參數(shù)
"myApp" 參數(shù)對應(yīng)執(zhí)行應(yīng)用的 HTML 元素。

在模塊定義中 [] 參數(shù)用于定義模塊的依賴關(guān)系。
中括號[]表示該模塊沒有依賴,如果有依賴的話會在中括號寫上依賴的模塊名字。

調(diào)用這個方法時如果只傳遞一個參數(shù),就可以用它來引用模塊。例如,可以通過以下代碼來引用myApp模塊:

angular.module('myApp')

這個方法相當(dāng)于AngularJS模塊的getter方法,用來獲取對模塊的引用。
接下來,就可以在angular.module('myApp')返回的對象上創(chuàng)建我們的應(yīng)用了。

module導(dǎo)入

上面的例子中,可以發(fā)現(xiàn).module方法第二個參數(shù)是一個空數(shù)組,這個空數(shù)組是為了指定在此module中需要用到哪些其他的modules。

現(xiàn)在,我們定義另一個module,然后將其導(dǎo)入到我們定義好的名為myApp的module中:

angular.module('myApp.services', [])

.factory('testFactory', function(){
    return {
        Hello: function(){
            return "Hello World!";
        }

    }
});

可以看到,我們將此module命名為myApp.services并且為其定義了一個factory。注意到首行最后沒有分號。

現(xiàn)在,將我們新定義的module導(dǎo)入到第一個module里:

angular.module('myApp', ['myApp.services']);

我們需要做的只是,將module使用引號包裹放入到.module方法第二個參數(shù)的空數(shù)組里面,多個modules使用逗號隔開。
現(xiàn)在我們就可以使用第二個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 : "我在指令構(gòu)造器中創(chuàng)建!"
    };
});

不同module間的依賴注入

第一個module里定義一個factory

angular.module('myApp1', [])
    .factory('Chats', function() {  
        return{
            all: function() {
                return '123';
            }   
        }
});

第二個module里定義一個controller,在這個controller里注入module1的factory
注:這時在頁面里調(diào)用是不行的,要么在[ ]里寫入對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']);

然后在頁面里調(diào)用module3的app和module2的controller,這樣就行了

<div ng-app="myApp3" ng-controller="c2">  
    <h1>Hello {{pp}}</h1>
</div>

輸出結(jié)果: Hello 123

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ng-model 指令ng-model 指令 綁定 HTML 元素 到應(yīng)用程序數(shù)據(jù)。ng-model 指令也可以:...
    壬萬er閱讀 975評論 0 2
  • 模塊通常是指編程語言所提供的代碼組織機(jī)制,利用此機(jī)制可將程序拆解為獨(dú)立且通用的代碼單元。所謂模塊化主要是解決代碼分...
    一個敲代碼的前端妹子閱讀 2,028評論 8 23
  • 1、angularjs的幾大特性是什么? 雙向數(shù)據(jù)綁定、依賴注入、模板、指令、MVC/MVVM 2、列舉幾種常見的...
    2e9a10d418ab閱讀 1,474評論 0 10
  • 1、angularjs的幾大特性是什么? 雙向數(shù)據(jù)綁定、依賴注入、模板、指令、MVC/MVVM 2、列舉幾種常見的...
    秀才JaneBook閱讀 1,611評論 0 22
  • AngularJS是什么?AngularJs(后面就簡稱ng了)是一個用于設(shè)計動態(tài)web應(yīng)用的結(jié)構(gòu)框架。首先,它是...
    200813閱讀 1,805評論 0 3

友情鏈接更多精彩內(nèi)容