у меня были похожие проблемы со статусом авторизации, когда надо было отображать с помощью ng-if кнопку logout и происходило это почему-то только после обновления странички.
o.status = auth.status;
но когда я завернул метод контроллера в функцию
o.status = function () {
auth.status;
}
и использовал так
<div ng-controller="userController as uc">
<div ng-if="uc.status">
</div>
</div>
всё стало работать асинхронно, как надо, сразу по событию авторизации в фабрике.
может и Вам поможет )