国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

Angular中的$watch方法詳解

2024-05-06 15:26:35
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在$apply方法中提到過(guò)臟檢查,首先apply方法會(huì)觸發(fā)evel方法,當(dāng)evel方法解析成功后,會(huì)去觸發(fā)digest方法,digest方法會(huì)觸發(fā)watch方法。

(1)$watch簡(jiǎn)介

在digest執(zhí)行時(shí),如果watch觀察的的value與上一次執(zhí)行時(shí)不一樣時(shí),就會(huì)被觸發(fā)。

AngularJS內(nèi)部的watch實(shí)現(xiàn)了頁(yè)面隨model的及時(shí)更新。

$watch方法在用的時(shí)候主要是手動(dòng)的監(jiān)聽(tīng)一個(gè)對(duì)象,但對(duì)象發(fā)生變化時(shí)觸發(fā)某個(gè)事件。

(2)watch方法用法

$watch(watchFn,watchAction,deepWatch)

watchFn:angular表達(dá)式或函數(shù)的字符串

watchAction(newValue,oldValue,scope):watchFn發(fā)生變化會(huì)被調(diào)用

deepWatch:可選的布爾值命令檢查被監(jiān)控的對(duì)象的每個(gè)屬性是否發(fā)生變化

$watch會(huì)返回一個(gè)函數(shù),想要注銷這個(gè)watch可以使用函數(shù)

(3)例子

在前面的例子中,當(dāng)name的表單改變30次,然后觸發(fā)某個(gè)事件。

控制器代碼如下:

var firstController = function ($scope){  $scope.name='張三';  $scope.count=0;  // 監(jiān)聽(tīng)一個(gè)model 當(dāng)一個(gè)model每次改變時(shí) 都會(huì)觸發(fā)第2個(gè)函數(shù)  $scope.$watch('name',function(newValue,oldValue){    ++$scope.count;    if($scope.count > 30){      $scope.name = '已經(jīng)大于30次了';    }  });}

html代碼如下:

<!DOCTYPE html><html><head>  <meta charset="utf-8"></head><body>  <div ng-app="">    <div ng-controller="firstController">      <input type="text" value="" ng-model="name"/>      改變次數(shù):{{count}}-{{name}}    </div>  </div>  <script type="text/javascript" src="app/index.js"></script><script type="text/javascript" src="../../vendor/angular/angularjs.js"></script></body></html>

運(yùn)行效果如下:

前30次可以隨意修改:

當(dāng)修改了30次后,name固定為'已經(jīng)大于30次了':

這就是watch的作用,model每一次改變時(shí)都會(huì)觸發(fā)第二個(gè)函數(shù)。

(4)watch的第三個(gè)參數(shù)

當(dāng)監(jiān)聽(tīng)的為一個(gè)對(duì)象或者數(shù)組時(shí),例如:

 $scope.data = {    name :'李四',    count:20  }

此時(shí)data里的name和count都要監(jiān)聽(tīng),那么可以這么寫:

  $scope.$watch('data',function(){  },true)

如果不加第三個(gè)參數(shù),那么只會(huì)監(jiān)聽(tīng)data,只有當(dāng)data引用改變時(shí)才會(huì)觸發(fā)。

因此當(dāng)需要監(jiān)聽(tīng)一些引用對(duì)象需要把第三個(gè)參數(shù)設(shè)置成true。

總結(jié)

以上所述是小編給大家介紹的Angular中的$watch方法詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)錯(cuò)新站長(zhǎng)站網(wǎng)站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 咸宁市| 凤山县| 太仆寺旗| 济阳县| 尼木县| 元朗区| 建湖县| 潮州市| 四子王旗| 名山县| 浮山县| 全椒县| 桐柏县| 康定县| 许昌市| 武汉市| 安达市| 高雄县| 肥城市| 永济市| 伊川县| 清原| 嘉定区| 万源市| 哈巴河县| 诸暨市| 桑日县| 武安市| 安远县| 龙里县| 施甸县| 永安市| 平山县| 巨野县| 广宗县| 崇义县| 蒙阴县| 顺昌县| 开封县| 东莞市| 泸水县|