How to start scroll list from the bottom?
Add a watch instead:
$scope.$watch('messages', function(newValue, oldValue) { $ionicScrollDelegate.scrollBottom(true); }, true);
The reason you are getting this behaviour is cause deviceReady does not guarantee that the items are rendered yet, which causes your list to not scroll anywhere at all. With a watch, you'll scroll when the array has been loaded and the values are already there.