原文:http://yuankeqiang.lofter.com/post/8de51_1454f93
Angular.js中使用$watch监听模型变化
$watch简单使用
$watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你。
$watch(watchExpression, listener, objectEquality);
每个参数的说明如下:
watchExpression:监听的对象,它可以是一个angular表达式如'name',或函数如function(){return $scope.name}。
listener:当watchExpression变化时会被调用的函数或者表达式,它接收3个参数:newValue(新值), oldValue(旧值), scope(作用域的引用)
objectEquality:是否深度监听,如果设置为true,它告诉Angular检查所监控的对象中每一个属性的变化. 如果你希望监控数组的个别元素或者对象的属性而不是一个普通的值, 那么你应该使用它
举个栗子:
$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将会导致性能问题,$watch如果不再使用,我们最好将其释放掉。
$watch函数返回一个注销监听的函数,如果我们想监控一个属性,然后在稍后注销它,可以使用下面的方式:
var watch = $scope.$watch('someModel.someProperty', callback);
//...
watch();
还有2个和$watch相关的函数:
$watchGroup(watchExpressions, listener);
$watchCollection(obj, listener);
分享到:
相关推荐
Angular中的$watch方法详解 Angular中的$watch方法是AngularJS框架中的一种重要机制,用于监听模型的变化,并在变化时触发某些事件。下面将对$watch方法进行详细的介绍。 一、$watch方法简介 $watch方法是...
angular $watch观察$scope上的属性修改,因为在 angular 中$scope是事实的来源。 对于大多数用例来说,这是一个很好的模式。 但是,在某些情况下,您希望模块解耦,而 dom 是事实的基本来源。 如何? 默认配置 ...
`$watch`是Angular中最基础的观察者机制,它允许开发者监听一个表达式或函数的变化。当该表达式的结果发生变化时,会调用提供的回调函数。其原型如下: ```javascript $watch: function(watchExp, listener, ...
`listenerFn` 是一个匿名函数,它使用 `angular.forEach` 遍历 `newValue`,对每个元素执行检查。这里 `newValue` 是 `custArea` 变更后的数组,而 `oldValue` 是变更前的数组。 在遍历过程中,我们检查 `custArea`...
在实际应用中,$watch通常与ng-model指令一起使用。ng-model指令用于创建双向数据绑定,而$watch则在幕后工作,监控数据的变化。例如,当我们创建一个输入框并将某个作用域($scope)属性绑定到该输入框时,...
通过上文的解释和示例代码,我们可以看到Angular中如何使用$watch来监听对象内部属性的变化,包括$watch的使用方法、原理以及性能上的考虑。正确使用$watch可以让我们对作用域数据的变化做出准确及时的响应,从而...
在Angular.js中,$watch是...正确使用$watch,理解其参数和相关函数,以及注意性能优化,可以帮助你构建更高效、更健壮的Angular应用。在实际开发中,应尽可能减少不必要的$watch,避免过度依赖,从而提升应用性能。
watchFn:带有Angular 表达式或者函数的字符串,它会返回被监控的数据模型的当前值。 watchAction: 一个函数function(newValue,oldValue){},当watchFn 发生变化时会被调用 deepWatch:默认为false,监听数组的某个...
在上述代码中,虽然没有显式使用`$watch`,但AngularJS自动为所有`ng-bind`指令创建了内部的`$watch`,确保模型的更新能反映到视图上。 在示例代码中,我们有两个更新时钟的方法: - 第一种使用`$timeout`,内部...
本文将深入讲解`$watch`的工作原理、使用方式以及如何优化性能。 ### `$watch`的基本使用 `$watch`是一个在`$scope`对象上可用的函数,它接受三个参数: 1. `watchExpression`:这是你要监控的表达式或函数。...
本文实例总结了AngularJS中$apply方法和$watch方法用法...$apply使用情景 AngularJS 外部的控制器(DOM 事件、外部的回调函数如 jQuery UI 空间等)调用了AngularJS 函数之后,必须调用$apply。在这种情况下,你需要命
角度观察资源用于大型 Angular > v1.3 应用程序的模型层,具有一些细节 - 基于受 Jason Dobry 的启发的 $watch 模式。特征资源服务中的单一事实来源。 返回可以被我们的视图控制器和指令使用的数据。 通过这种方法,...
如果需要对对象的属性进行修改,并且希望这种修改能够被$watch监听到,应该使用诸如angular.extend这样的函数来实现对象的深拷贝,或者对属性值进行显式赋值。 最后,在使用$watch时也应注意性能问题。因为每次作用...
$ watch一次 此模块将$watchOnce , $watchGroupOnce和$watchCollectionOnce到角度范围。 它们中的每一个都具有与它们的角形对应物相同的特征。 所不同的是,您提供的侦听器仅在定义该值时才被调用一次。 请注意,...