You should just use the $http service it'll trigger an $apply for you so the view updates once the results come back, and the $http methods will return a promise that you can use to check in the script when the result comes back instead of a callback.
Just inject $http into your service (the top level function of the service)
then change your code to:
return $http.get("https://jsonblob.com/api/5544b86z_edited_3aef9ba")
.then(function(response){
var result = response.data;
days = result.Days;
});
It's likely that days should be a property of the service itself as well so you can inject the service into a controller set a reference to it on the scope and then show it in the view.
Alternatively you can have your service method return the result of the .then call which will be another promise then in the controller you could do:
Calendar.all.then(function(response){
$scope.days = response.data;
});
The promise is basically an alternative way to handle async operations that replaces the need for a regular callback because the promise object stores any functions you pass to then and triggers them when the result comes back. The .then method of the promise actually takes two functions optionally first a success callback then an error callback, see the promise documentation for details.