In my controller I call a service that returns a promise. It is fetching external data. A directive in my view relies on this data. When I load the page, the directive renders immediately with undefined parameters. How can I delay the view from rendering the directive until the promise is resolved?
I tried putting a 'resolve' in the route, but I am using a service to get the promise, so i can't use the below:
My data is retrieved via promise in my controller like this:
var promise = DataService.getThing();
so I tried doing that using the example below, but the route would just never change, as if the promise is never resolved.
PhoneListCtrl.resolve = {
phones: function($q, DataService) {
var deferred = $q.defer();
deferred.resolve = DataService.getThing() // getThing returns a promise!
return deferred.promise;
}}