Angular view not updating when refreshing data coming from service with $http

This might be a question asked 10 thousand times but I still can't find a proper solution to this problem.

I just have the classical example of controller getting the data from a service, which in turn uses

$http

to fetch some data asynchronously from an API (or JSON file). Because the data in the controller are a reference to an object in the service, I was expecting the data to change when the service has done its job, and so I was expecting the view to update. As you can see in the snippet below the view retains the initial value.

Thus, my two questions:

Is this a good pattern? Imagine that the controllers are more than one and that at certain point the data needs to be re-fetch (and so updated in any controller)

Why the view is not updating ?

Keep in mind that I don't want to use $scope (if possible) nor $rootSscope, nor $watch.

Your problem is an asynchronous one... You don't want to get your data from $http in your service and expect it to be ready when your controller is ready for it. Don't try to return data, instead return a promise of data: