我实现了一个hack,以便使用Angular 1.4指令滚动元素的内容。但是,更改元素滚动位置的代码需要在单击相同元素x秒后完成。
这个指令绝对不会改变HTML元素的滚动位置。
我应该使用原生浏览器setTimeout
还是$timeout
功能。我觉得使用$timeout
是不必要的,因为这将触发摘要周期(如上所述,这是不必要的)。
所以我的问题可以归结为:这是一个好主意,是否存在类似或其他情况,其中保证使用原生setTimeout
超过$timeout
函数。
答案 0 :(得分:2)
AngularJs已经解释了这一点。 $timeout
和$interval
都接受一个可选参数,允许您跳过脏检查:invokeApply
默认情况下设置为true。
$timeout(someFunction, 1000, false)
将跳过$digest
。您应始终使用$timeout
而不是setTimeout
。 $timeout
是setTimeout
的包装器,可以通过$exceptionHandler
处理异常。