在scope的内置的所有函数中,用的最多的可能就是$watch函数了, 当你的数据模型中某一部分发生变化时,$watch函数可以向你发出通知。 你可以监控单个对象的属性,亦可以监控需要经过计算的结果(函数), 实际上只要能够被当做属性访问到, 或者可以当做一个Java函数被计算出来, 就可以被$wacth函数监控。它的函数签名为:

$watch (watchFn, watchAction, deepWatch)

其中watchFn

这个参数是一个带有Angular表达式或者函数的字符串, 它会返回被监控函数的数据模型的当前值。

  watchAction

这是一个函数表达式, 当watchFn发生变化时会被调用。

  deepWatch

如果设置为true, 这个可选的布尔型参数将会命令Angular去检查被监控对象的每个属性是否发生了变化。若果你想要监控数组中的元素, 或者对象上的所有属性, 而不只是监控一个简单的值, 就可以设置为true。

写了一个小例子,大家可以看看。

 <!DOCTYPE>
<html ng-app='myApp'>
<head>
<meta charset="UTF-8">
<title>Your Shopping Cart</title>
<script src="../../../vendor/angular/angular.js"></script>
<script src="../../../vendor/angular/angular-route.js"></script>
</head>
<body ng-controller='CartController'>
<h1>Your order</h1> <div ng-repeat="item in items">
<span>{{item.title}}</span>
<input ng-model='item.quantity'>
<span>{{item.price | currency}}</span>
<span>{{item.price * item.quantity | currency}}</span>
<div>Total:{{totalCart()}}</div>
<div>Discount: {{bill.discount}}</div>
<div>Subtatal: {{subtotal()}}</div>
</div> <script>
var myAppMoudle = angular.module('myApp', []);
myAppMoudle.controller('CartController', ['$scope', function ($scope) {
$scope.bill={};
$scope.discount = 2;
$scope.items = [{title: 'paint', quantity: 8, price: 3.95},
{title: 'pa', quantity: 7, price: 3.95},
{title: 'paa', quantity: 17, price: 3.95},
{title: 'paaa', quantity: 177, price: 3.95}];
$scope.totalCart = function () {
var total = 0;
for(var i = 0, len = $scope.items.length; i < len; i++){
total = total + $scope.items[i].price * $scope.items[i].quantity;
}
return total;
} $scope.subtotal = function () {
return $scope.totalCart() - $scope.discount;
}; function calculateDiscount(newValue, oldValue, scope) {
$scope.bill.discount = newValue > 100 ? 10 : 0;
} $scope.$watch($scope.totalCart, calculateDiscount);
}]);
</script>
</body>
</html>

最新文章

  1. Scrum Meeting 20161207
  2. [问题记录.VisualStudio]TFS项目映射问题解决
  3. AC日记——刺激 codevs 1958
  4. [LintCode] Maximal Square 最大正方形
  5. Android布局优化
  6. Codeforces Round #268 (Div. 1) B. Two Sets 暴力
  7. document模板
  8. 变身windows达人,用运行命令直接启动所有应用程序
  9. 软件测试-nextDate问题
  10. SQL字符串转换为数组
  11. day02HTML_CSS
  12. jQuery——动态给表格添加序号
  13. 我所不知道的Makefile语法
  14. [C++ Primer Plus] 第10章、对象和类(一)程序清单——辨析三个const
  15. Android权限大全(链接地址整理)
  16. vue项目使用webpack loader把px转换为rem
  17. sptring boot 修改默认Banner
  18. 用C++实现一个Brainfuck解释器
  19. (LeetCode 83)Remove Duplicates from Sorted Lists
  20. Django学习笔记 Django的工程目录

热门文章

  1. Android自己定义控件
  2. C和C++代码精粹笔记1
  3. Spring里bean之间的循环依赖解决与源码解读
  4. Canvas学习笔记——动画环境中的边界
  5. 【TensorFlow-windows】(四) CNN(卷积神经网络)进行手写数字识别(mnist)
  6. 果壳、推库、虎秀、知乎、it世界
  7. 说说设计模式~单件模式(Singleton)
  8. WWDC2014 IOS8 APP Extensions
  9. echarts 饼状图
  10. 20170228 交货单过账增强 MV50AFZ1