你如何重置“$ timeout”,并禁用“$ watch()”angularJS?

时间:2016-03-03 08:29:19

标签: angularjs

如何重置$timeout,并停用$watch()

3 个答案:

答案 0 :(得分:2)

两者的关键是将函数的结果赋给变量。

要清除超时,只需“.cancel()”it:

apply

同样适用于“$ interval()”。

要停用手表,只需拨打电话。

var customTimeout = $timeout(function () {
// arbitrary code 
}, 55);
$timeout.cancel(customTimeout);

答案 1 :(得分:1)

你已经得到了大部分答案,但另一个可能有用的点是你应该在相关范围被销毁时清理手表,所以下面的模式非常有用:

$scope.$on('$destroy', $scope.$watch(function() { /* ... */ });

这将确保在销毁范围时始终自动取消$watch

当然,如果您想要手动销毁手表,您还必须保存结果以便调用它,但是这种模式可以让您在大多数情况下避免使用。

答案 2 :(得分:0)

您可以使用$timeout清除$timeout.cancel,如下所示:

var myTimer = $timeout(function() { /* ... */ }, 5000);
$timeout.cancel(yourTimer);

您可以通过它返回的注销函数清除$watch()

var dereg = $scope.$watch(function() { /* ... */ });
dereg(); // watcher is now gone