javascript - Weird `$evalAsync` behaviour -
abstract
hi, i'm trying manipulate scroll logic of angular application (by hand), since there no such thing onloaded
event in angular, trying accomplish within $interval loop. worked ui flickering, looked scroll first goes way , down again making terrible. i've started looking solution problem , found this answer. in said have looking $evalasync
capable of queueing operation before ui it's rendering. lead me following code:
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); };
which hangs , shows misunderstanding of angular's $evalasync
method.
question
according code above need method trying set scroll until succeeds, after when should stop, how do using $evalasync
?
thank in advance!
==================
edit
ive managed make work, not without devils (the $$postdigest) in code, here goes:
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); };
is there better way?
Comments
Post a Comment