6 ms·
When I was using Angular I thought doing something like setTimeout(function() { $scope.$digest(); }, 0); was an ugly hack and a sign of angular's leaky abst
by drapper 11y ago
When I was using Angular I thought doing something like
setTimeout(function() { $scope.$digest(); }, 0);
was an ugly hack and a sign of angular's leaky abstractionism showing up. Is this considered a good practice now (or always was)?
Edit: just to clarify, I'm asking because in OP this was given as a one of the way to fix Angular speed issues.
- jsprogrammer 11y agoNo.
- timruffles 11y agoThat's a sign someone has fundamentally misunderstood Angular and is hacking around their misunderstanding.
- dmak 11y agoIt's the same thing as using $timeout; It runs a digest at the end after a setTimeout. I wouldn't call it a good practice, but it wouldn't bother me either if I saw it in a codebase. You are also welcome to use things like $evalAsync.
- lucisferre 11y agoIt's not the same thing, as the author points out since using `$timeout` in the example without an isolate scope was the source of the original problem. Instead he's suggesting you use $timeout without it's default behaviour (something that's possible now through the false argument or by calling setTimeout directly). This is absolutely a leaky abstraction, and whether or not it's necessary sometimes when using Angular, it should still bother you.