$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
为什么这会停止推动num
到nums
点击以打破它按钮并继续点击增加按钮?
您可以查看此video。
答案 0 :(得分:4)
$scope.watch()
的{{3}}说:
返回
function()返回此侦听器的注销函数
当您致电$scope.watch()
时,它会返回一个您可以随时调用的功能以取消注册。
您的控制器会将该功能分配给$scope.breakit
,因此当调用$scope.breakit
时,手表会关闭。
修改强>
评论中有一个问题,即$scope.break
如何将值推送到nums
数组。答案是它没有。 $scope.watch()
会自行处理这一切,$scope.break
用作关闭此过程的方法。