一、$watch簡單使用
$watch是一個scope函數(shù),用于監(jiān)聽模型變化,當你的模型部分發(fā)生變化時它會通知你。
$watch(watchExpression, listener, objectEquality);
每個參數(shù)的說明如下:
watchExpression:監(jiān)聽的對象,它可以是一個angular表達式如'name',或函數(shù)如function(){return $scope.name} 。
listener:當watchExpression變化時會被調(diào)用的函數(shù)或者表達式,它接收3個參數(shù):newValue(新值), oldValue(舊值), scope(作用域的引用)
objectEquality:是否深度監(jiān)聽,如果設(shè)置為true,它告訴Angular檢查所監(jiān)控的對象中每一個屬性的變化. 如果你希望監(jiān)控數(shù)組的個別元素或者對象的屬性而不是一個普通的值, 那么你應該使用它
舉個栗子:
$scope.name = 'hello';var watch = $scope.$watch('name',function(newValue,oldValue, scope){ console.log(newValue); console.log(oldValue);});$timeout(function(){ $scope.name = "world";},1000);二、監(jiān)聽多個值的變化
大家通常遇到的情況為通過$watch()一次監(jiān)聽一個值的變化,當然這種時候滿足絕大部分情況。但是通過閱讀官網(wǎng)對于$watch()的解釋,$watch()還有第三個參數(shù),第三個參數(shù)是一個布爾類型,表示是否深度監(jiān)聽,深度監(jiān)聽的例子就是是否進行比較對象的屬性。
這樣我們就可以實現(xiàn)一次監(jiān)聽多個值的變化。
示例代碼
var app=angular.module("watchApp",[]) .controller("watchController",["$scope",function($scope){ $scope.object={}; $scope.object.one=$scope.one; $scope.object.one=$scope.one; $scope.$watch("object",function(){ ..... },true); }])總結(jié)
以上就是關(guān)于AngularJS如何一次監(jiān)聽多個值發(fā)生變化的全部內(nèi)容,大家都學會了嗎?希望這篇文章的內(nèi)容對大家的學習和工作能有所幫助,如果有疑問可以留言交流,謝謝大家對武林網(wǎng)的支持。
新聞熱點
疑難解答