亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解JavaScript的AngularJS框架中的表達式與指令

 更新時間:2016年03月05日 15:41:33   作者:ng-newsletter  
這篇文章主要介紹了JavaScript的AngularJS框架中的表達式與指令,文中羅列了幾個常用的指令屬性加以說明,需要的朋友可以參考下

“指令屬性”就是綁定在DOM元素上的函數(shù),它可以調(diào)用方法、定義行為、綁定controller及$scope對象、操作DOM,等等等等。

當瀏覽器啟動、開始解析HTML(像平時一樣)時,DOM元素上的指令屬性就會跟其他屬性一樣被解析。

當一個Angular.js應用啟動,Angular編譯器就會遍歷DOM樹(從有ng-app指令屬性的那個DOM元素開始,如我們在本系列第一篇里所提過的),解析HTML,尋找這些指令屬性函數(shù)。

當在一個DOM元素上找到一個或多個這樣的指令屬性函數(shù),它們就會被收集起來、排序,然后按照優(yōu)先級順序被執(zhí)行。

每個指令屬性都有自己的優(yōu)先級,在我們關(guān)于指令屬性的專題文章里(http://www.ng-newsletter.com/posts/directives.html),你可以找到更深入的信息。

Angular.js應用的動態(tài)性和響應能力,都要歸功于指令屬性。之前我們已經(jīng)看過一些指令屬性的用例:

ng-model

<input ng-model="name" name="Name" placeholder="Enter your name"/>
<h4>Your name: {{ name }}</h4>

試試看

201635153322176.jpg (266×142)

ng-model指令屬性(我們在之前的章節(jié)使用過它),被用來將DOM文本輸入框的值,跟controller里的$scope model綁定起來。具體的實現(xiàn)過程,是在這個值上綁定了一個$watch函數(shù)(類似JavaScript里的事件監(jiān)聽函數(shù))。

$watch函數(shù)(在使用時)運行在Angular.js的事件循環(huán)(即$digest循環(huán))里,讓Angular.js能夠?qū)OM進行相應的更新。請關(guān)注我們關(guān)于$digest循環(huán)的高級文章!

在Angular.js應用的開發(fā)中,我們用指令屬性來將行為綁定到DOM上。指令屬性的使用,是一個 應用能否擁有動態(tài)性、響應能力的關(guān)鍵。Angular.js提供了很多缺省的指令屬性,現(xiàn)在讓我們來看看其中幾個,以及如何使用它們。

幾個常見的指令屬性:

{{ 表達式 }}

這個雙大括號指令屬性,使用$watch()函數(shù),給括號內(nèi)的表達式注冊了一個監(jiān)聽器。正是這個$watch函數(shù),讓Angular.js能夠?qū)崟r自動更新view。

那么,到底什么算是個表達式?
要想理解指令屬性的運作,我們必須先理解表達式,所以這里我們就繞個路,看看本系列的第五部分——表達式。在之前的例子里我們已經(jīng)見過表達式,例如 {{ person.name }} 和 {{ clock }}。

{{ 8 + 1 }}9
{{ person }}{"name":"Ari Lerner"}
{{ 10 * 3.3 | currency }}$33.00

最后的例子里 (10 * 3.3 | currency) 用了一個過濾器。本系列之后的部分,會深入介紹過濾器。

表達式粗略來看有點像 eval(javascript) 的結(jié)果。它們會經(jīng)過Angular.js的處理,從而擁有以下重要而獨特的性質(zhì):

所有表達式都在scope這個context里被執(zhí)行,因此可以使用所有本地 $scope 中的變量。
如果一個表達式的執(zhí)行導致類型錯誤或引用錯誤,這些錯誤將不會被拋出。
表達式里不允許任何控制函數(shù)流程的功能(如if/else等條件語句)
表達式可接受一個或多個串聯(lián)起來的過濾器。
試試看

201635153431973.jpg (690×100)

試試輸入“person“,“clock“或其他數(shù)學算式如2+4。你甚至可以操作scope,例如,試試輸入person.name = ”Ari”; person.age = 28; person 或 clock

表達式都運行在調(diào)用它們的scope里,所以一個表達式可訪問并操作其scope上的一切。由此,你可以使用表達式遍歷其scope的屬性(我們在ng-repeat中會看到這一應用)、調(diào)用scope里的函數(shù),或者對scope中的變量進行數(shù)學運算。

現(xiàn)在,讓我們回到指令屬性…

ng-init

ng-init指令屬性是一個在啟動時運行的函數(shù)(在程序進入運行階段之前)。它讓我們能夠在程序運行前設定初始變量的值:

<b ng-init='name = "Ari Lerner"'>Hello, {{ name }}</b>

試試看

Hello, Ari Lerner

ng-click

ng-click指令屬性給DOM元素注冊了一個點擊事件的監(jiān)聽器。當此DOM元素上有點擊事件發(fā)生(即當此button或link被點擊時),Angular.js就會執(zhí)行表達式的內(nèi)容,并相應地更新view。

<button ng-click="counter = counter + 1">Add one</button>
Current counter: {{ counter }}

試試看

201635153535444.jpg (292×107)

我們也可以用ng-click 來調(diào)用在controller里寫好并綁定在$scope上的函數(shù),例如:

<button ng-click="sayHello()">Say hello</button>

controller 里的函數(shù):

app.controller('MyController', function($scope) {
  $scope.sayHello = function() {
   alert("hello!");
  }
 });

試試看

201635153610563.jpg (516×190)

ng-show / ng-hide

ng-show和ng-hide指令,根據(jù)賦予它們的表達式的值的真假性(truthy),來顯示和隱藏它們所屬的那一部分DOM。

我們在這里不會深入,但你應該熟悉JavaScript中變量值的“truthy”和“falsy”概念。

<button ng-init="shouldShow = true" ng-click="shouldShow = !shouldShow">Flip the shouldShow variable</button>
 <div ng-show="shouldShow">
  <h3>Showing {{ shouldShow }}</h3>
 </div> <div ng-hide="shouldShow">
  <h3>Hiding {{ shouldShow }}</h3>
 </div>

ng-repeat

ng-repeat指令遍歷一個數(shù)據(jù)集合中的每個數(shù)據(jù)元素,加載HTML模版把數(shù)據(jù)渲染出來。被重復使用的模版元素,就是我們綁定了這個指令屬性的DOM元素。每一個使用模版渲染的DOM元素都有自己的scope。

在更多的解釋之前,我們先看一個例子。假設我們的controller里有這樣一個數(shù)據(jù)元素的數(shù)組:

$scope.roommates = [
  { name: 'Ari'},
  { name: 'Q'},
  { name: 'Sean'},
  { name: 'Anand'}
 ];

在view里我們可以用ng-repeat來遍歷這個集合里的數(shù)據(jù):

<ul>
  <li ng-repeat="person in roommates">{{ person.name }}</li> </ul>

對賦予ng-repeat的表達式稍作改動,我們還可以用它遍歷一個由成對的key-value數(shù)據(jù)組成的集合。例如,假設我們有一個人名和他們最喜歡的顏色的數(shù)據(jù)集合:

$scope.people = {
  'Ari': 'orange',
  'Q': 'purple',
  'Sean': 'green'
 }

要遍歷它,我們可以給ng-repeat指令屬性賦予這個表達式: (key, value) in object:

<ul>
  <li ng-repeat="(name, color) in people">{{ name }}'s favorite color is {{ color }}
  </li>
 </ul>

 

相關(guān)文章

  • Angular4的輸入屬性與輸出屬性實例詳解

    Angular4的輸入屬性與輸出屬性實例詳解

    這篇文章主要介紹了Angular4的輸入屬性與輸出屬性,結(jié)合實例形式詳細分析了Angular4輸入屬性與輸出屬性的概念、功能及相關(guān)使用技巧,需要的朋友可以參考下
    2017-11-11
  • MODULE_INITIALIZER初始化Angular?懶加載模塊高級技巧

    MODULE_INITIALIZER初始化Angular?懶加載模塊高級技巧

    這篇文章主要為大家介紹了MODULE_INITIALIZER初始化Angular懶加載模塊高級技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • AngularJS手動表單驗證

    AngularJS手動表單驗證

    這篇文章主要介紹了AngularJS手動表單驗證的相關(guān)資料,AngularJS的表單驗證大致有兩種,一種是手動驗證,一種是自動驗證,本文重點介紹AngularJS手動表單驗證,感興趣的小伙伴們可以參考一下
    2016-02-02
  • angular8和ngrx8結(jié)合使用的步驟介紹

    angular8和ngrx8結(jié)合使用的步驟介紹

    這篇文章主要給大家介紹了關(guān)于angular8和ngrx8結(jié)合使用的詳細步驟,文中通過示例代碼介紹的非常詳細,對大家學習或者使用angular8具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-12-12
  • Angular設計模式hierarchical?injector實現(xiàn)代碼復用模塊化

    Angular設計模式hierarchical?injector實現(xiàn)代碼復用模塊化

    這篇文章主要為大家介紹了Angular設計模式hierarchical?injector實現(xiàn)代碼復用模塊化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Ionic+AngularJS實現(xiàn)登錄和注冊帶驗證功能

    Ionic+AngularJS實現(xiàn)登錄和注冊帶驗證功能

    這篇文章主要介紹了Ionic+AngularJS實現(xiàn)登錄和注冊帶驗證功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • Angular中使用Intersection Observer API實現(xiàn)無限滾動效果

    Angular中使用Intersection Observer API實現(xiàn)無限滾動效果

    這篇文章主要介紹了Angular中使用Intersection Observer API實現(xiàn)無限滾動,實現(xiàn)原理為 在data下面加一個loading元素 如果此元素進入視窗 則調(diào)用api獲取新的數(shù)據(jù)加到原來的數(shù)據(jù)里面,這時loading就會被新數(shù)據(jù)頂下去,感興趣的朋友一起看看吧
    2023-12-12
  • angularJs在多個控制器中共享服務數(shù)據(jù)的方法

    angularJs在多個控制器中共享服務數(shù)據(jù)的方法

    今天小編就為大家分享一篇angularJs在多個控制器中共享服務數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 使用AngularJS實現(xiàn)可伸縮的頁面切換的方法

    使用AngularJS實現(xiàn)可伸縮的頁面切換的方法

    這篇文章主要介紹了使用AngularJS實現(xiàn)可伸縮的頁面切換的方法,AngularJS是一款熱門的JavaScript庫,需要的朋友可以參考下
    2015-06-06
  • AngularJS ng-controller 指令簡單實例

    AngularJS ng-controller 指令簡單實例

    本文主要介紹AngularJS ng-controller 指令,這里對ng-controller指令資料的整理,并附代碼示例和效果圖,有需要的朋友看下
    2016-08-08

最新評論