Почему в angular не отображаются изменения до наведения на них мышкой?
Проблема в том, что setTimeout вызывает функцию асинхронно, и нужно уведомить ангуляр о том, что данные нужно обновить при помощи метода $scope.$apply().
Чтобы избежать этого можно использовать сервис $timeout(ссылка на доку), вместо стандартного window.setTimeout.
Да, замечал такое поведение, причем не обязательно наводить мышкой на этот элемент, можно начать вводить в какое-нибудь поле ввода, которое отслеживает ангуляр, и только тогда view обновляется. 
Как вариант, можно обновить руками (но не стоит увлекаться):showMe = true;
setTimout(function(){
    showMe = false
    $scope.$apply();
}, 0)