我正在更新一个长数组,这个数组计算复杂,可能需要一两秒钟。
当阵列正在改变时(即在不同的算法步骤中),角度保持更新每个中间步骤的ui。
我如何要求角度停止寻找此变量一两秒的变化并在我完成后再次开始观察?
答案 0 :(得分:4)
如何让angular停止为此变量寻找更改 一两秒钟后,我完成后又开始观看它?
假设您指的是控制器范围变量与视图之间的双向数据绑定,一种解决方案是在控制器变量中对范围进行计算,然后将该变量分配给范围。这种方式在"第二或第二个"计算正在进行,摘要周期不会在变量上触发:
// making copy so we are not passing by reference (array or object)
var localCopyOfVar = angular.copy( $scope.complexArray );
// do complex stuff with localCopyOfVar
// ...
// assign finished work back onto scope variable
$scope.complexArray = localCopyofVar;
答案 1 :(得分:1)
如果您在HTML标记中使用{{ }}
,则无法停止监视。如果您自己创建了$ watch,则可以将其停止并稍后重启:
var watchFunction = ... blahBlah ...
var stopWatch = scope.$watch('foo', watchFunction)
stopWatch()
您可以通过不使用$ timeouts在单个摘要中执行所有更新来最小化/消除屏幕闪烁。