1. 程式人生 > >初學者眼中的的Angularjs(二)

初學者眼中的的Angularjs(二)

四、資料繫結

AngularJS是以資料做為驅動的MVC框架,所有模型(Model)裡的資料經由控制器(Controller)展示到檢視(View)中。
所謂資料繫結指的就是將模型(Model)中的資料與相應的檢視(View)進行關聯,分為單向繫結和雙向繫結兩種方式。

4.1單向繫結

單向資料繫結是指將模型(Model)資料,按著寫好的檢視(View)模板生成HTML標籤,然後追加到DOM中顯示,如之前所學的artTemplate
模板引擎的工作方式。 如下圖所示,只能模型(Model)資料向檢視(View)傳遞。
這裡寫圖片描述

4.2雙向繫結

雙向繫結則可以實現模型(Model)資料和檢視(View)模板的雙向傳遞,如下圖所示。
這裡寫圖片描述

4.3相關指令

在AngularJS中通過“{{}}”ng-bind指令來實現模型(Model)資料向檢視模板(View)的繫結,模型資料通過一個內建服務scopescope是一個空物件,通過為這個物件新增屬性或者方法便可以在相應的檢視(View)模板裡被訪問。

注:“{{}}”是ng-bind的簡寫形式,其區別在於通過“{{}}”繫結資料時會有“閃爍”現象,新增ng-cloak也可以解決“閃爍”現象,通過ng-

AngularJS對事件也進行了擴充套件,無需顯式的獲取DOM元素便可以新增事件,易用性變的更強。通過在原有事件名稱基礎上新增ng-做為字首,然後以屬性的形式新增到相應的HTML標籤上即可。如ng-click、ng-dblclick、ng-blur等。

通過ng-repeat可以將陣列或物件資料迭代到檢視模板中,ng-switch、on、ng-switch-when可以對資料進行篩選。

五、作用域

通常AngularJS中應用(App)是由若干個檢視(View)組合成而成的,而檢視(View)又都是HTML元素,並且HTML元素是可以互相巢狀的,另一方面檢視都隸屬於某個控制器(Controller),進而控制器之間也必然會產生巢狀關係。

每個控制器(Controller)又都對應一個模型(Model)也就是scopeControllerscope便產生了作用域。

5.1根作用域
一個AngularJS的應用(App)在啟動時會自動建立一個根作用域$rootScope,這個根作用域在整個應用範圍(ng-app所在標籤以內)都是可以被訪問到的。

5.2子作用域
通過ng-controller指令可以建立一個子作用域,新建的作用域可以訪問其父作用域的資料。

六、過濾器

在AngularJS中使用過濾器格式化展示資料,在“{{}}”中使用“|”來呼叫過濾器,使用“:”傳遞引數。
6.1內建過濾器

1、currency將數值格式化為貨幣格式
2、date日期格式化,年(y)、月(M)、日(d)、星期(EEEE/EEE)、時(H/h)、分(m)、秒(s)、毫秒(.sss),也可以組合到一起使用。
3、filter在給定陣列中選擇滿足條件的一個子集,並返回一個新陣列,其條件可以是一個字串、物件、函式
4、json將Javascrip物件轉成JSON字串。 5、limitTo取出字串或陣列的前(正數)幾位或後(負數)幾位
6、lowercase將文字轉換成小寫格式 7、uppercase將文字轉換成大寫格式 8、number數字格式化,可控制小位位數
9、orderBy對陣列進行排序,第2個引數是布林值可控制方向(正序或倒序)

6.2自定義過濾器
除了使用AngularJS內建過濾器外,還可以根業務需要自定義過濾器,通過模組物件例項提供的filter方法自定義過濾器。
這裡寫圖片描述

七、依賴注入

AngularJS採用模組化的方式組織程式碼,將一些通用邏輯封裝成一個物件或函式,實現最大程度的複用,這導致了使用者和被使用者之間存在依賴關係。
所謂依賴注入是指在執行時自動查詢依賴關係,然後將查詢到依賴傳遞給使用者的一種機制。 通俗的講就是通入注入的方式解決依賴關係。
常見的AngularJS內建服務有httplocation、timeoutrootScope等

7.1推斷式注入
沒有明確宣告依賴,AngularJS會將函式引數名稱當成是依賴的名稱。
這裡寫圖片描述
這種方式會帶來一個問題,當代碼經過壓縮後函式的引數被壓縮,這樣便會造成依賴無法找到。

7.2行內注入
以陣列形式明確宣告依賴,陣列元素都是包含依賴名稱的字串,陣列最後一個元素是依賴注入的目標函式。
這裡寫圖片描述
推薦使用這種方式宣告依賴