在使用AngulaJS编写应用时,我们经常需要做的一件事情就是对模型中的变量进行监视,并对其发生的变化做出相应的回应。如:购物车小计。
AngularJS为我们提供了一个非常方便的$watch方法,它可以帮助我们在每个scope中监视其中的变量。下面是一个非常简单的例子:
$scope.name = 'zhangsan'; $scope.count = 0; $scope.cart = [ {id:1,name:'iphone5s',quantity:3,price:4300}, {id:2,name:'iphone5c',quantity:30,price:3300}, {id:3,name:'mac',quantity:3,price:14300}, {id:4,name:'ipad',quantity:100,price:2000} ]; // 监听一个model 当一个model每次改变时 都会触发第2个函数 $scope.$watch('name', function(newValue, oldValue) { // console.log(newValue+ '===' +oldValue); ++$scope.count; if ($scope.count > 3) { $scope.name = '已将大于3次了'; } }); $scope.$watch('cart', function(newValue, oldValue) { // console.log(newValue); angular.forEach(newValue, function(item, key) { if(item.quantity < 1) { var returnKey = confirm('是否从购物车内删除该产品'); if(returnKey) { $scope.remove(item.id); }else{ item.quantity = oldValue[key].quantity; } return ; } }); }, true); ////检查被监控的对象的每个属性是否发生变化
上面的这段代码非常简单,它用$watch来对$scope中的name进行监视,并在它发生变化的时候将$rootScope中的count属性增加1。因此,每当我们对name进行一次修改时,下面显示的change count数字就会增加1,当count>3时,改变name的值。
在AngularJS内部,每当我们对ng-model绑定的name属性进行一次修改,AngularJS内部的$digest就会运行一次,并在运行结束之后检查我们使用$watch来监视的东西,如果和进行上一次$digest之前相比有了变化,则执行我们在其中绑定的处理函数。
相关推荐
$watch方法,它可以帮助我们在每个scope中监视其中的变量。 $watch 单一的变量 对于普通的变量时,如数字,字符串等,直接如下写是可以监视到变量的变化,并执行相应的函数的。 $scope.count=1; $scope.$watch('...
在AngularJS的Scope对象上,使用$scope.$watch()方法可以监视作用域内变量的变化,并在变化发生时执行特定的操作。$watch()接受三个参数:第一个参数watchExpression是一个可以是字符串或者函数,用于指定需要监视的...
`$watchCollection`是介于`$watch`和`$watch`之间的一个选择,专门用于监视数组和对象的元素级变化。与`$watch`不同,`$watchCollection`会在数组元素或对象属性添加、删除或改变时触发。这样,即使不改变对象引用...
在给定的实例中,我们看到一个具体的 `$watch` 使用示例,用于监视 `custArea` 变量的变化,并在发生变化时执行特定的操作。 首先,我们需要了解 `$watch` 的基本语法: ```javascript $scope.$watch('expression'...
这个过程中,$scope对象会注册需要运行的函数,即$watch函数,这些函数用来监视数据变化。 3. **变化阶段**:当视图中绑定的数据发生变化时,或者当执行了某个操作导致数据发生变化时,$scope对象会进行脏值检测...
- **$digest()**: 触发一次消化循环,在这个循环中AngularJS会检查所有被监视的模型是否发生了变化。 - **$apply()**: 触发一次消化循环,并确保在非AngularJS上下文中(如定时器)所做的更改也能被正确检测到。 **...
利用AngularJS的$watch监视器来监听模型变量的变化,一旦发现变量有变动就重新计算total值。这种方法可以保持模型变量的原始类型不变,而通过控制器中的逻辑来计算和更新需要以数字形式呈现的结果,有助于保持代码...
- **$watch列表**:遍历并执行所有监视表达式的函数,确保视图与模型同步。 - **$evalAsync队列**:处理异步操作,确保在视图渲染前完成。 - **渲染视图**:$digest循环结束后,浏览器根据更新的数据渲染页面。 ...
例如,在地理位置选择中,当用户从下拉列表中选择一个选项时,我们可以通过`$watch`监视变化,并据此更新其他选择项。 4. **$http服务**: 在AngularJS中,`$http`服务用于发起HTTP请求。我们可以使用它从服务器端...
在脏检查循环中,AngularJS会递归检查所有注册的watch表达式,如果发现数据有变化,就会触发相应的watcher函数来更新视图。这个过程会一直持续到所有watcher函数都不再报告数据变更为止。一旦完成一轮检查而没有发现...
$emit()是从子作用域向上冒泡事件到父作用域,而$watch()可以监视作用域中变量的变化并作出相应的响应。 AngularJS提供了一套完整的事件系统,帮助开发者在不同的作用域之间进行通信,这对于实现复杂的单页应用...
- 使用$watch来监视作用域变量的变化,以便及时更新星星状态。 9. 整合进控制器: - 最后,需要在AngularJS的控制器中定义max、ratingVal、hoverVal,并设置相应的事件处理函数。 - 可以设置默认值,使得在加载...
在JavaScript中,`watch`是一个经常用于调试和动态监测变量值的特性,尤其是在Node.js环境中。 JavaScript中的`watch`功能通常涉及到对象观察和事件监听。例如,在Node.js中,`fs.watch()`方法可以监视文件系统的...
这是通过监视$scope.search变量并在$watch函数中检查是否含有敏感字来实现的。 在表单提交后,如果用户成功添加或修改信息,可以通过$scope.data数组来更新界面显示的用户列表。由于AngularJS实现了双向数据绑定,...