在ES6 angularjs控制器类中注册和注销setInterval()

时间:2017-07-13 22:02:55

标签: javascript angularjs ecmascript-6 angular-ui-router

我使用控制器类作为状态控制器,并在构造函数中注册了一个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。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

$onDestroy hook特定于所有指令控制器,而不仅仅是组件。它是triggered on scope $destroy event

由于状态控制器获得自己的范围,对于基于模板的路由,可以使用范围$destroy侦听器来完成:

$scope.$on('$destroy', () => {
  clearInterval(interval);
});
UI路由器1.0 via component-based routes支持

$onDestroy