淺談Angular.js中使用$watch監(jiān)聽模型變化
$watch簡單使用
$watch是一個scope函數(shù),用于監(jiān)聽模型變化,當(dāng)你的模型部分發(fā)生變化時它會通知你。
$watch(watchExpression, listener, objectEquality);
每個參數(shù)的說明如下:
- watchExpression:監(jiān)聽的對象,它可以是一個angular表達(dá)式如'name',或函數(shù)如function(){return $scope.name}。
- listener:當(dāng)watchExpression變化時會被調(diào)用的函數(shù)或者表達(dá)式,它接收3個參數(shù):newValue(新值), oldValue(舊值), scope(作用域的引用)
- objectEquality:是否深度監(jiān)聽,如果設(shè)置為true,它告訴Angular檢查所監(jiān)控的對象中每一個屬性的變化. 如果你希望監(jiān)控數(shù)組的個別元素或者對象的屬性而不是一個普通的值, 那么你應(yīng)該使用它
舉個栗子:
$scope.name = 'hello';
var watch = $scope.$watch('name',function(newValue,oldValue, scope){
console.log(newValue);
console.log(oldValue);
});
$timeout(function(){
$scope.name = "world";
},1000);
$watch性能問題
太多的$watch將會導(dǎo)致性能問題,$watch如果不再使用,我們最好將其釋放掉。
$watch函數(shù)返回一個注銷監(jiān)聽的函數(shù),如果我們想監(jiān)控一個屬性,然后在稍后注銷它,可以使用下面的方式:
var watch = $scope.$watch('someModel.someProperty', callback);
//...
watch();
還有2個和$watch相關(guān)的函數(shù):
$watchGroup(watchExpressions, listener); $watchCollection(obj, listener);
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
AngularJS實現(xiàn)動態(tài)添加Option的方法
這篇文章主要介紹了AngularJS實現(xiàn)動態(tài)添加Option的方法,涉及AngularJS事件響應(yīng)及頁面元素動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-05-05
Angular.js項目中使用gulp實現(xiàn)自動化構(gòu)建以及壓縮打包詳解
基于流的前端自動化構(gòu)建工具,利用gulp可以提高前端開發(fā)效率,特別是在前后端分離的項目中。下面這篇文章主要給大家介紹了關(guān)于在Angular.js項目中使用gulp實現(xiàn)自動化構(gòu)建以及壓縮打包的相關(guān)資料,需要的朋友可以參考下。2017-07-07
AngularJs定時器$interval 和 $timeout詳解
這篇文章主要介紹了AngularJs定時器$interval 和 $timeout詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05

