这如何打破观看价值?

时间:2014-12-13 16:03:59

标签: angularjs

$scope.$watch('num',function(){
  $scope.nums.push($scope.num)
})

更改上面的代码会破坏点击的观看价值(我不清楚因为breakit仍然将值推到了nums):

$scope.breakit = $scope.$watch('num',function(){
  $scope.nums.push($scope.num)
})

但我不清楚这是如何打破观看价值的?

完整代码:

<div ng-controller="MainController">
   <div>Num: {{num}}</div>
   <div>Nums: {{nums}}</div>
   <button ng-click="increment()">Increment</button>
   <button ng-click="breakit()">Break It</button>
</div>

var app = angular.module('app',[]);
app.controller('MainController',function($scope){
   $scope.num = 0
   $scope.nums = []
   $scope.increment = function(){
        $scope.num++;
   }
   $scope.breakit = $scope.$watch('num',function(){
      $scope.nums.push($scope.num)
   })
});

所以,使用$scope.breakit为什么这会停止推动numnums点击以打破它按钮并继续点击增加按钮?

您可以查看此video

1 个答案:

答案 0 :(得分:4)

$scope.watch()的{​​{3}}说:

  

返回

     

function()返回此侦听器的注销函数

当您致电$scope.watch()时,它会返回一个您可以随时调用的功能以取消注册。

您的控制器会将该功能分配给$scope.breakit,因此当调用$scope.breakit时,手表会关闭。


修改

评论中有一个问题,即$scope.break如何将值推送到nums数组。答案是它没有。 $scope.watch()会自行处理这一切,$scope.break用作关闭此过程的方法。