如何重置$timeout
,并停用$watch()
?
答案 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