$watch

注册一个监听器某个数据变化的时触发的勾子

查看勾子的介绍

Basis

$scope.text = "监听 text 属性的变化";
$scope.checkbox_data = {};
$scope.$watch('text',function(newValue,oldValue){
    console.log($scope.text);
},true);
当 text 的值发生变化时, 就会触发, 同时会传递会修改后的值与修改前的值

Example

<div ng-app="myApp" ng-controller="ExampleController">
  <div ng-repeat="(key,item) in ckmodel">
    <label>
      {{ key }}:
      <input type="checkbox" name="ckmodel"  ng-model="ckmodel[key]">
    </label>
  </div>
  <p>
    value1 =  <span ng-bind="ckmodel | json "></span>
  </p>
  <br/>
  <pre>{{ checkbox_data | json }}</pre>
</div>
<script>
  angular.module('myApp', [])
    .controller('ExampleController', ['$scope', function($scope) {
      	$scope.ckmodel = {
          value1 : true,
          value2 : true
      	};
      	$scope.checkbox_data = {};
      	$scope.$watch('ckmodel',function(newValue,oldValue, scope){
        	$scope.checkbox_data = newValue;
      	},true);
    }]);
</script>

介绍

$scope.$watch(watchExpression, listener, objectEquality);

属性 类型 说明
watchExpression string / function 需要监听的对象
listener function(newVal,oldVal,scope) 监听触发时执行的勾子函数
objectEquality boolean 使 angular 一直坚挺该对象的数据变化