Для этого лучше использовать события. Они сработают моментально, не завязаны на $digest циклах и т.д. Лепить для этого добра байндинги неоправданно большой оверхэд. Вообще если речь идет о уведомлении о изменении состояния глобально, то лучше просто в $rootScope эмитить событие которое будет распространяться вниз по всем дочерним.
p.s. почему вы не пользуетесь промисами? вместо
myService.auth(data, function () {
alert('success');
});
можно делать так:
myService.auth(data).then(function () {
});
при этом у вас появляется масса возможностей. Можно вклиниваться в цепочки промисов, можно ждать пока не завершится несколько паралельных запросов. Можно посредством цепочки промисов видоизменять данные:
myService.auth().then(function (userId) {
return user.get(userId);
}).then(function (user) {
// тут можно чего с пользователем поделать
return user.friends;
}).then(function (friends) {
if( !friends.length) {
return $q.reject('У вас 0 друзей :(');
}
return $q.all(friends.map(function (user) {
profile.get(user.id);
});
}).then(function (friendsProfiles) {
$scope.friends = friendsProfiles;
}, function (error) {
alert(error);
});
надеюсь понятно обрисовал возможности. Сервис $http и почти все сервисы в ангуляре возвращают промисы. Забудьте о тупых колбэках.