我使用控制器类作为状态控制器,并在构造函数中注册了一个setInterval()方法,以便在每30秒后调用一次服务。
set.seed(42)
matrix1 <- matrix(1:25, nrow = 5)
matrix2 <- matrix1 + rnorm(25)
# shift overlapped
matrix3 <- cbind(matrix1[,1:2], 1/2*(matrix1[,3:5]+matrix2[,1:3]), matrix2[,4:5])
现在问题是当状态改变时仍然发生服务调用,因此需要使用clearInterval()方法但不确定如何使用它。 因为它不是一个组件所以不能使用$ ondestroy()。也不想使用statechange事件监听器等。是否还有其他方法,如析构函数或类似的东西,可用于取消注册setInterval。我正在使用带有ES 6语法的angular-ui-router。任何帮助表示赞赏。
答案 0 :(得分:1)
$onDestroy
hook特定于所有指令控制器,而不仅仅是组件。它是triggered on scope $destroy
event。
由于状态控制器获得自己的范围,对于基于模板的路由,可以使用范围$destroy
侦听器来完成:
$scope.$on('$destroy', () => {
clearInterval(interval);
});
UI路由器1.0 via component-based routes支持 $onDestroy
。