2014-12-02 81 views
0

我是AngularJS的新手,我跟着一些教程开始。在一个教程它展示了如何与下面的例子删除守望者:AngularJS - 为什么观察者被移除?

$scope.breakit = $scope.$watch('mydata.val',function(newval){ 
    $scope.mydata.toolong = newval.length >3; 
}) 

<button ng-click="breakit()">Break It</button> 

它的工作原理,但我不明白的是为什么会调用该函数breakit将删除观察者?

回答

1

$ watch in angularjs返回一个注销函数,调用它将取消注册$ watcher,这就是您正在经历的示例中所解释的内容。

现在的问题是你什么时候想要解开一个表达式。当它对你没有用处时,它很简单(因为它包含性能)。例如像上面显示的代码那样,

当value大于3时,它设置一个变量$ scope.mydata.toolong = 1可能用于某种验证目的,但它也为您提供了一个按钮“Break it”(如果需要)要输入大于3的值才能通过取消注册功能监视来破坏验证。