AngularJS理論基礎

                                AngularJS理論基礎javascript

AngularJs是一個用於設計動態web應用的結構框架。html

它是一個框架,不是類庫,是像EXT同樣提供一整套方案用於設計web應用。它不只僅是一個javascript框架,由於它的核心實際上是對HTML標籤的加強。使你可以用標籤完成一部分頁面邏輯,具體方式就是經過自定義標籤、自定義屬性等,這些HTML原生沒有的標籤/屬性在ng中有一個名字:指令(directive)。web應用能爲用戶提供豐富的操做,可以隨用戶操做不斷更新視圖而不進行url跳轉。ng官方也聲明它更適用於開發CRUD應用,即數據操做比較多的應用,而非是遊戲或圖像處理類應用。爲了實現這些,它引入了一些很是棒的特性,包括模板機制、數據綁定、模塊、指令、依賴注入、路由。經過數據與模板的綁定,可以讓咱們擺脫繁瑣的DOM操做,而將注意力集中在業務邏輯上。前端

 AngularJS的四大核心特性:java

1.MVC:Model(數據模型層)-Controller(業務邏輯和控制邏輯)-View(視圖層 負責展現)程序員

爲何須要MVC:職責清晰,代碼模塊化,有利於代碼的複用,有利於後期維護(修改一塊功能不影響其餘模塊)。web

前端MVC的困難:操做DOM的代碼必須等待整個頁面所有加載完成才能夠執行;多個JS文件之間若是出現互相依賴,程序員必須本身解決;JS的原型繼承也給前端編程帶來不少困難。編程

AngularJS中的controller:json

controller使用過程當中的注意點:前端框架

1:不要試圖去複用controller,一個控制器通常只負責一小塊的視圖;app

2:不要在controller中操做DOM,這不是控制器的職責所在;

3:不要在controller裏面作數據格式化,ng有很好用的表單控件;

4:不要在controller裏面作數據過濾操做,ng有$filter服務;

5:通常來講,controller是不會互相調用,控制器之間的交互經過事件進行。

 AngularJS中的Module:

 

2.模塊化

<!doctype html>
<html ng-app>
<head>
<mate charset="utf-8">
</head>
<body>
<div ng-controller="HelloAngularJs">//控制器controller
<p>{{greeting.text}},Angular</p>//P標籤:視圖view ;{{}}:數據模型module   
</div>  
</body>
<script src="js/angular-1.3.0.js"></script>  
<script>
//非模塊化
    function HelloAngular($scope){
        $scope.grerting={
            text:'hello'
        };    
    }
//模塊化
var myMoudel=angular.module("HelloAngular",[]);
myMoudel.controller("hellorAngular",['$scope',//依賴注入
  function HelloAngular($scope){
        $scope.grerting={
            text:'hello'
        };    
    }    
])
</script>      
</html>                

AngularJS依賴注入:和主動獲取相反,是對數據的被動接收

  關於$scope

  1.$scope是POJO(Plain Old Javascript Object);
  2.$scope是有層次關係的;

  3.$scope是表達式的執行環境(做用域);

  4.$scope是樹形結構,與DOM標籤平行;

  5.$scope對象會繼承父$scope的屬性和方法;

  6.每個Angular應用只有一個根$scope對象(通常位於ng-app上);

  7.$scope能夠傳播事件,相似於DOM事件,能夠向上也能夠向下;

  8.$scope不只是MVC的基礎,也是後面是想雙向數據綁定的基礎;

  9.在主模塊加載時就有一個默認的$scope,稱爲$rootscope(根scope),是全部scope的父做用空間,

    在沒有其餘指定的scope時都是默認的rootscope,有指定的scope時,運行它自己;

  10.$scope提供了一些工具方法$watch()、$apply();

  11.其餘指定的scope時,各自也是在指定的做用空間內起做用。

3.指令系統(特有)

<!doctype html>
<html ng-app="MyModule">//ng-app在一個單頁應用中只能出現一個
<head> <mate charset="utf-8"> </head> <body> <hello></hello> </body> <script src="js/angular-1.3.0.js"></script> <script> var myMoudel=angular.module("myModule",[]); myMoudel.directive("hello",function(){//hello是directive的名稱 return{
      restrict:'E',
      template:'<div>Hi everyone!</div>'
      replace:true
      
}; });
</script> </html> //利用Directive實現View的複用

指令(directive)
模板中可使用的東西包括如下四種:

1.指令(directive):ng提供的或者自定義的標籤和屬性,用來加強HTML表現力;

2.標記(markup):即雙大括號{{}},可將數據單向綁定到HTML中;

3.過濾器(filter):用來格式化輸出數據;

4.表單控制:用來加強表單的驗證功能。

5.樣式相關的指令:

ng-class

<div ng-class=」{redtext:{{red}}, boldtext:{{bold}}, striketext:{{strike}}}」 ></div>

ng-style

<div ng-style="{color:'red'}">ng-style測試</div>

6.對於經常使用的表單控件功能,ng也作了封裝,方便靈活控制。

  <1>.ng-checked控制radio和checkbox的選中狀態

  <2>.ng-selected控制下拉框的選中狀態

  <3>.ng-disabled控制失效狀態

  <4>.ng-multiple控制多選

  <5>.ng-readonly控制只讀狀態

7.事件綁定相關指令

 <1>.ng-click

 <2>.ng-change

 <3>.-dblclick

 <4>.-mousedown

 <5>.-mouseenter

 <6>.-mouseleave

 <7>.-mousemove

 <8>.-mouseover

 <9>.-mouseup

 <10>.ng-submit

4.雙向數據綁定(特有)

<!doctype html>
<html ng-app>
<head>
<mate charset="utf-8">
</head>
<body>
<input ng-module="greeting.text"/>
<p>{{greeting.text}},AngularJS</p>
</body>
<script src="js/angular-1.3.0.js"></script>      
</html>   //複用module    

 

表達式
1.能夠作比較;

2.同時邏輯運算均可以使用;

3.加減乘除等等。

過濾器
currency(貨幣)、date(日期)、filter(子串匹配)、json(格式化json對象)、limitTo(限制個數)、lowercase(小寫)、uppercase(大寫)、number(數字)、orderBy(排序)

 

Angularjs與jQuery之間的區別:
Ng:它是一種基於MVVM理念的前端框架,模型與視圖相互綁定的方法,利用$scope把模型內的東西顯示在視圖上,完成相應的雙向綁定,不須要對DOM進行任何操做。依賴注入是Ng中的重要理念:想要的東西不須要本身去建立,只須要申明後接收注入。
jQ:它是對js的一種封裝,本質上仍是js的方法,仍是對DOM進行了大量的操做。

$watch:
$scope的監聽列表,是一個隊列。只有和視圖綁定的纔會添加到監聽列表,監聽列表不斷檢測數據的改變,但他會不斷的立刻響應檢測和改變,因此引出$digest。

$digest:
專門循環監聽列表$watch。若是$watch的某一個元素的數據不同,就對該元素數據的改變進行暫時保存,再用回調函數循環檢測下一個改變,直到隊列中全部的改變中止後再發送。可是在$digest中不能過多的引發改變。

$digest循環的啓動條件:$scope的數據的改變必須在Anglurjs的上下文範圍。如何保持在Anglurjs的上下文範圍,就有了$apply。

$apply:Anglurjs的上下文中的一個對象,能夠把不在Anglurjs上下文範圍的元素放在$apply中,給他造成一個Anglurjs上下文。

相關文章
相關標籤/搜索