初識(shí)AngularJs

一、AngularJs簡(jiǎn)介

? ? ? 1.AngularJS使用了不同的方法,它嘗試去補(bǔ)足HTML本身在構(gòu)建應(yīng)用方面的缺陷。AngularJS通過使用我們稱為標(biāo)識(shí)符(directives)的結(jié)構(gòu),讓瀏覽器能夠識(shí)別新的語(yǔ)法。


? ? ?2. 最為核心的特性:MVVM、模塊化、自動(dòng)化雙向數(shù)據(jù)綁定、語(yǔ)義化標(biāo)簽、依賴注入等等。AngularJS直接用網(wǎng)頁(yè)本身作為模板。


二、AngularJs的指令

ng-app指令標(biāo)記了AngularJS腳本的作用域,在中添加ng-app屬性即說明整個(gè)都是AngularJS腳本作用域??梢灾苯邮褂茫部梢灾付ㄒ粋€(gè)名字。

ng-controller = "str"指定一個(gè)AngularJs的控制器,相當(dāng)于ng-app模塊下的組件,其最大的作用就是把一個(gè)作用域($scope)和模版上的html標(biāo)簽綁定到一起,限定了$scope的作用域

ng-model=””獲取和修改具有value屬性的值,數(shù)據(jù)的雙向綁定

ng-bind=””修改一個(gè)標(biāo)簽內(nèi)部的innerHTML,設(shè)置的值不存在該標(biāo)簽元素不會(huì)顯示,數(shù)據(jù)不是雙向的

{{ }}插值語(yǔ)法是渲染數(shù)據(jù)到頁(yè)面中。插值符號(hào){{}}不能替換屬性的名字,能夠替換的是文本內(nèi)容和屬性的值。

ng-click=”fun” AngularJs自帶的單擊事件

ng-dblclick=”fun” AngularJs自帶的雙擊事件

ng-focus=”fun” ? AngularJs自帶的獲取焦點(diǎn)事件

ng-blur=”fun” ?AngularJs自帶的失去焦點(diǎn)事件

ng-change=”fun” AngularJs自帶的事件

ng-submit=”fun”?AngularJs自帶的表單提交事件

……

ng-class=”{類樣式1:true,類樣式2:false}”AngularJs設(shè)置狀態(tài)樣式

ng-style=”{屬性1:值,屬性2:值}”AngularJs設(shè)置狀態(tài)樣式

ng-readonly=”boolean” ?AngularJs設(shè)置只讀狀態(tài),可以提交數(shù)據(jù)

ng-disable=”boolean” ?AngularJs設(shè)置未激活狀態(tài),不可提交數(shù)據(jù)

ng-hide=”boolean” ?AngularJs設(shè)置隱藏狀態(tài),不改變dom結(jié)構(gòu)

ng-show=”boolean” AngularJs設(shè)置顯示狀態(tài),不改變dom結(jié)構(gòu)

ng-if=”boolean” ?AngularJs設(shè)置if判斷流程,改變dom結(jié)構(gòu),true顯示該dom,false隱藏該dom元素

ng-switch=”值”AngularJs設(shè)置分支判斷流程,會(huì)改變dom結(jié)構(gòu)

ng-switch-when=”判斷值”顯示對(duì)應(yīng)值的dom

ng-switch-default默認(rèn)的值

ng-repeat ? AngularJs循環(huán)流程,可以循環(huán)數(shù)組和對(duì)象,并且會(huì)重新限定一個(gè)作用域,在該作用域下有一個(gè)對(duì)象(包含了各種信息)。

ng-view ? 實(shí)現(xiàn)路由的托管,根據(jù)路徑的不同,將對(duì)應(yīng)的頁(yè)面渲染到網(wǎng)頁(yè),即ng-view所在的位置

三、AngularJs使用

1、AngularJs的包建議引到head部分

2、使用一個(gè)AngularJsBatarang瀏覽器插件可以輔助開發(fā)

3、在script標(biāo)簽中

var app = angular.module('demo', []);

參數(shù)一:模塊的名字

參數(shù)二:要依賴的其它模塊名字

作用:創(chuàng)建了一個(gè)angularJs模塊

app.controller('tian', function ($http, $scope) {

$scope.name = '綁定值';

$scope.click = function () {

$scope.name = '綁定方法,在方法內(nèi)部再綁定值'

};

$http.get('lisi.json')

.success(function (data) {

console.log(data);

})

});

參數(shù)一:控制器的名字

參數(shù)二:帶$scope、$http、$parse、$rootScope等固定形參(沒有順序)的函數(shù)

作用:創(chuàng)建一個(gè)控制器并限定函數(shù)的作用域

四、AngularJs中的依賴注入

在回調(diào)函數(shù)中,AngularJs會(huì)提供對(duì)應(yīng)參數(shù)的對(duì)象服務(wù),用什么功能就傳什么參數(shù)。

$scope控制器的作用域,是一個(gè)對(duì)象可以在內(nèi)部綁定任意屬性

$scope.$watch(“表達(dá)式”,function(newvalue,oldvalue,scope){}) 是$scope上自帶的一個(gè)方法,用來監(jiān)聽表達(dá)式值的變化

$http是angularJs對(duì)ajax的封裝

$parse作用:將一個(gè)AngularJS表達(dá)式轉(zhuǎn)換成一個(gè)函數(shù)

$rootScope可以訪問控制器的根(父級(jí))作用域

$timeout是AngularJs對(duì)原生timeout的封裝

$location是AngularJs對(duì)window原生location的封裝

$location. path( )是$location對(duì)象的一個(gè)屬性,可以獲取路由路徑

五、AngularJs中的雙向數(shù)據(jù)綁定

? ? ? ?雙 向綁定:把我們的數(shù)據(jù)和html文檔綁定起來,我們只需要關(guān)注數(shù)據(jù)就可以了,dom操作由angularjs去管理,一來方便,二可以提高安全性(程序員寫代碼的bug概率降低)

六、AngularJs中的mvvm

在angular中MVVM模式主要分為四部分:

1.View:它專注于界面的顯示和渲染,在angular中則是包含一堆聲明式Directive的視圖模板。

2.ViewModel:它是View和Model的粘合體,負(fù)責(zé)View和Model的交互和協(xié)作,它負(fù)責(zé)給View提供顯示的數(shù)據(jù),以及提供了View中Command事件操作Model的途徑;在angular中$scope對(duì)象充當(dāng)了這個(gè)ViewModel的角色;

3.Model:它是與應(yīng)用程序的業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)的封裝載體,它是業(yè)務(wù)領(lǐng)域的對(duì)象,Model并不關(guān)心會(huì)被如何顯示或操作,所以模型也不會(huì)包含任何界面顯示相關(guān)的邏輯。在web頁(yè)面中,大部分Model都是來自Ajax的服務(wù)端返回?cái)?shù)據(jù)或者是全局的配置對(duì)象;而angular中的service則是封裝和處理這些與Model相關(guān)的業(yè)務(wù)邏輯的場(chǎng)所,這類的業(yè)務(wù)服務(wù)是可以被多個(gè)Controller或者其他service復(fù)用的領(lǐng)域服務(wù)。

4.Controller:這并不是MVVM模式的核心元素,但它負(fù)責(zé)ViewModel對(duì)象的初始化,它將組合一個(gè)或者多個(gè)service來獲取業(yè)務(wù)領(lǐng)域Model放在ViewModel對(duì)象上,使得應(yīng)用界面在啟動(dòng)加載的時(shí)候達(dá)到一種可用的狀態(tài)。

View不能直接與Model交互,而是通過$scope這個(gè)ViewModel來實(shí)現(xiàn)與Model的交互。對(duì)于界面表單的交互,通過ngModel指令來實(shí)現(xiàn)View和ViewModel的同步。ngModelController包含$parsers和$formatters兩個(gè)轉(zhuǎn)換器管道,它們分別實(shí)現(xiàn)View表單輸入值到Model數(shù)據(jù)類型轉(zhuǎn)換和Model數(shù)據(jù)到View表單數(shù)據(jù)的格式化。對(duì)于用戶界面的交互Command事件(如ngClick、ngChange等)則會(huì)轉(zhuǎn)發(fā)到ViewModel對(duì)象上,通過ViewModel來實(shí)現(xiàn)對(duì)于Model的改變。然而對(duì)于Model的任何改變,也會(huì)反應(yīng)在ViewModel之上,并且會(huì)通過$scope的“臟檢查機(jī)制”($digest)來更新到View。從而實(shí)現(xiàn)View和Model的分離,達(dá)到對(duì)前端邏輯MVVM的分層架構(gòu)。

七、什么是單頁(yè)面應(yīng)用

本質(zhì):無刷新的單頁(yè)面,當(dāng)用戶操作的時(shí)候ajax請(qǐng)求數(shù)據(jù),局部的更新我們的頁(yè)面,所有的操作都在這張頁(yè)面上完成,都由JavaScript來控制。

理念:更好的用戶體驗(yàn),無停頓的用戶交互

問題:寫起來非常的麻煩

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

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

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