angularjs學(xué)習(xí)筆記之三大模塊(modal,controller,view)
今天主要跟大家詳細(xì)講解一下angularjs的三大模塊: modal,controller,view。
首先跟大家說一下這三個模塊之間的關(guān)系。
1.數(shù)據(jù)模型(modal)主要提供數(shù)據(jù)。它不會和視圖(view)直接操作。
2.controller保存modal提供的數(shù)據(jù),與視圖進(jìn)行操作。
3.view是視圖,也就是頁面展示。
4.總而言之,controller負(fù)責(zé)數(shù)據(jù)和視圖之間的通信,就是兩者的接口人。他們分工明確,實現(xiàn)了模塊化。
一.如何使用數(shù)據(jù)模型(modal)?
講到數(shù)據(jù)模型,我們再來看一下上一節(jié)教程的例子:
<!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.然后會繼續(xù)找具體的指令,這里會找到ng-model,定義了一個“text”的數(shù)據(jù)模型。
3.下面使用了text的這個模型,所以實現(xiàn)了雙向綁定。(只要是在ng-app的作用域內(nèi),都能直接使用text)
二.如何使用控制器(controller)?
首先說一下使用控制器的幾個要點:
1.不要視圖復(fù)用controller,一個控制器一般只負(fù)責(zé)一小塊視圖(一一對應(yīng));
2.不要在controller中直接操作DOM,這不是控制器的職責(zé),操作DOM要使用指令derective(見上節(jié)教程);
3.不要在controller中進(jìn)行數(shù)據(jù)過濾的操作,有專門的filter服務(wù)來實現(xiàn)這一塊;
4.一般來說,不同的controller之間是不互相調(diào)用的,控制器的交互一般通過事件進(jìn)行。
然后我們來看上面代碼藍(lán)色的部分,controll.js的內(nèi)容是:
function controller($scope){ $scope.greeting = { text : 'hello' }; }
angularjs找到一個ng-controller的指令,然后會找到定義這個指令的地方,就是controll.js文件,然后可以使用greeting.text直接獲取到他的值。
三.如何使用視圖(view)?
說到如何使用視圖,就必須提到directive。(這里是新的知識了喲?。。。。?/p>
下面來看一段代碼:
var appModule = angular.module('app', []); //app是html中ng-app指令的名稱 appModule.directive('hello', function() { //定義一個指令,名稱叫hello return { restrict: 'E', template: '<div>Hi there</div>', replace: true }; });
上面的代碼定義了一個指令標(biāo)簽,你可以直接在html中試試<hello></hello>,看看會發(fā)生什么吧?。。?/p>
然后我再講解一下每個屬性的含義:
1.restrict :(字符串)可選參數(shù),指明指令在DOM里面以什么形式被聲明。取值有:E(元素),A(屬性),C(類),M(注釋);上面的例子設(shè)置為元素形式(<hello></hello>);
2.template: (字符串或者函數(shù))可選參數(shù),返回的內(nèi)容,上面的例子返回的是一個div;
3.templateUrl: 同上,通過url返回內(nèi)容,如果返回內(nèi)容很多,則建議使用此屬性。
4.relace:(布爾值),默認(rèn)值為false。上面的例子設(shè)為了true:頁面使用hello標(biāo)簽后會被返回的div代替。
5.transclude:(布爾值),當(dāng)設(shè)為true時。這個配置選項可以讓我們提取包含在指令那個元素里面的內(nèi)容,再將它放置在指令模板的特定位置,與ng-transclude合用。
6.還有一些其他屬性,具體大家再慢慢了解吧。。。
OK,以上就是對這3個主要模塊的使用說明了。希望對大家的學(xué)習(xí)有幫助啦。。。如果對于上面的筆記有不懂的地方,盡管問我,我肯定會給大家解答的。祝大家生活愉快!
相關(guān)文章
Angularjs在360兼容模式下取數(shù)據(jù)緩存問題的解決辦法
這篇文章主要為大家詳細(xì)介紹了Angularjs在360兼容模式下取數(shù)據(jù)緩存問題的解決辦法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06Angular4實現(xiàn)圖片上傳預(yù)覽路徑不安全的問題解決
這篇文章主要給大家介紹了關(guān)于Angular4實現(xiàn)圖片上傳預(yù)覽路徑不安全問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12AngularJS實現(xiàn)動態(tài)添加Option的方法
這篇文章主要介紹了AngularJS實現(xiàn)動態(tài)添加Option的方法,涉及AngularJS事件響應(yīng)及頁面元素動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-05-05在 Angular 中實現(xiàn)搜索關(guān)鍵字高亮示例
本篇文章主要介紹了在 Angular 中實現(xiàn)搜索關(guān)鍵字高亮示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03Angular4學(xué)習(xí)筆記之根模塊與Ng模塊
這篇文章主要介紹了Angular4學(xué)習(xí)筆記之根模塊與Ng模塊,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09