今天主要跟大家詳細講解一下angularjs的三大模組: modal,controller,view。
先跟大家說一下這三個模組之間的關係。
1.資料模型(modal)主要提供資料。它不會和視圖(view)直接操作。
2.controller保存modal提供的數據,與視圖進行操作。
3.view是視圖,也就是頁面展示。
4.總而言之,controller負責資料和視圖之間的通信,就是兩者的介面人。他們分工明確,實現了模組化。
一.如何使用資料模型(modal)?
講到資料模型,我們再來看看上一節教學的範例:
<!DOCTYPE html> <html ng-app="app"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="angular-1.2.19/angular.js"></script> <!-- 引入了AngularJS包 --> <script src="controll.js"></script> //引入控制器 </head> <body> <div ng-controller="controller"> <input type="text" ng-model="text"> <b>{{greeting.text}} {{text}}</b> </div> </body> </html>
1.先引入,angularjs包,啟動的時候先是去找ng-app指令,也就指定了整個的作用域;
2.接著會繼續找到特定的指令,這裡會找到ng-model,定義了一個「text」的資料模型。
3.下面使用了text的這個模型,所以實現了雙向綁定。 (只要在ng-app的作用域內,都能直接使用text)
二.如何使用控制器(controller)?
先說一下使用控制器的幾個重點:
1.不要檢視重複使用controller,一個控制器一般只負責一小塊視圖(一一對應);
2.不要在controller中直接操作DOM,這不是控制器的職責,操作DOM要使用指令derective(見上節教學);
3.不要在controller中進行資料過濾的操作,有專門的filter服務來實現這一塊;
4.一般來說,不同的controller之間是不互相呼叫的,控制器的互動一般透過事件進行。
接著我們來看上面程式碼藍色的部分,controll.js的內容是:
function controller($scope){ $scope.greeting = { text : 'hello' }; }
angularjs找到一個ng-controller的指令,然後會找到定義這個指令的地方,就是controll.js文件,然後可以使用greeting.text直接取得到他的值。
三.如何使用視圖(view)?
說到如何使用視圖,就必須提到directive。 (這裡是新的知識了喲!!!!)
以下來看一段程式碼:
var appModule = angular.module('app', []); //app是html中ng-app指令的名称 appModule.directive('hello', function() { //定义一个指令,名称叫hello return { restrict: 'E', template: '<div>Hi there</div>', replace: true }; });
上面的程式碼定義了一個指令標籤,你可以直接在html中試試
然後我再談解每個屬性的意義:
1.restrict :(字串)可選參數,指明指令在DOM裡面以什麼形式被宣告。取值有:E(元素),A(屬性),C(類),M(註);上面的範例設定為元素形式(
2.template: (字串或函數)可選參數,傳回的內容,上面的範例回傳的是一個div;
3.templateUrl: 同上,透過url傳回內容,如果傳回內容很多,建議使用此屬性。
4.relace:(布林值),預設值為false。上面的例子設為了true:頁面使用hello標籤後會被傳回的div取代。
5.transclude:(布林值),設為true時。這個配置選項可以讓我們提取包含在指令那個元素裡面的內容,再將它放置在指令模板的特定位置,與ng-transclude合用。
6.還有一些其他屬性,具體大家再慢慢了解吧。 。 。
OK,以上就是對這3個主要模組的使用說明了。希望對大家的學習有幫助啦。 。 。如果對於上面的筆記有不懂的地方,儘管問我,我一定會給大家解答的。祝大家生活愉快!