Using setTimeout to get scrolling chat window to work, but doesn't feel like the ideal solution
If you find yourself using setTimeout and want to be more angular, check out the $timeout service in the AngularJS API.

In addition, for your purposes, you might be better off using $evalAsync.

$evalAsync waits for at least one digest cycle before executing the expression, which might be enough for the DOM to have the new elements added (though not yet rendered). This can prevent the "flicker" that you otherwise get from waiting for elements to render before manipulating them. The only reason to not use $evalAsync would be if you're dependent on the DOM rendering for accuracy.