嗨,我正在尝试操纵我的角度应用程序的滚动逻辑(手动),因为在角度中没有onLoaded
事件这样的事情,我试图在$ interval循环中完成它。它工作但是UI闪烁,看起来滚动首先一直向上,然后再次向下,使一切看起来很糟糕。我已经开始寻找解决问题的方法,并找到this回答。据说我必须要求$evalAsync
能够在UI进行渲染之前对操作进行排队。它引导我转到以下代码:
var restoreScroll = function (scroll) {
angular.element($window).scrollTop(scroll);
var fn = function () {
debugger;
var value = angular.element($window).scrollTop();
if (value !== scroll) {
angular.element($window).scrollTop(scroll);
$rootScope.$evalAsync(fn);
}
}
$rootScope.$evalAsync(fn);
};
挂起并显示我对Angular的$evalAsync
方法的误解。
根据上面的代码,我需要一个方法,试图设置滚动直到它成功,在它应该停止之后,你如何使用$evalAsync
做到这一点?
提前谢谢!
==================
我设法让它工作,但不是没有我的代码中的恶魔($$ postDigest),所以这里:
var restoreScroll = function (scroll) {
angular.element($window).scrollTop(scroll);
var fn = function () {
var value = angular.element($window).scrollTop();
if (value !== scroll) {
angular.element($window).scrollTop(scroll);
$rootScope.$$postDigest(fn);
}
}
$rootScope.$$postDigest(fn);
};
有更好的方法吗?