Hi Tom,

I've already tried that with the following code, I can successfully 
injected the data into the controller too. But it still doesn't work, the 
data doesn't seem to be resolved prior to the template loading.

   .when('/countries/data', {
      templateUrl: 'views/countries/data.html',
      controller: 'countriesCtrl',
         resolve:{
             dataField: function(GetData) {        
             var someData = GetData.query();
         return someData;
        }
       }
      })

If I output the variable in the console after the controller is 
instantiated I still see:

[$promise: Object, $resolved: false]


Thanks


Antony

On Tuesday, 22 July 2014 00:52:50 UTC+1, Tom Zhou wrote:
>
> I often use promise with routeUI Resolve, which can resolve promise first, 
> then inject data dependency into a controller.
>
> Best regards
>   Tom  
>
> On Tuesday, July 22, 2014 7:01:52 AM UTC+8, [email protected] wrote:
>>
>> So I've pretty much got to grips with the whole promise, defer concept 
>> but I'm struggling with a couple of final hurdles.
>>
>> My factory is working fine and querying an external rest service without 
>> issues
>>
>>  .factory('GetData', ['$resource',
>>   function($resource){
>>     
>>     return $resource('http://my-rest-server/rest/ml-sql/country_locations
>> ', {}, {
>>       query: {
>>        method:'GET',
>>        isArray:false
>>        
>>    }
>>       
>>     })
>>     
>>   }])
>>
>>   
>> In my controller I'm injecting the service and successfully loading it 
>> however I have an issue in that init needs to run after all the data has 
>> been returned from the service [it won;t work unless the data is available 
>> up front].
>>
>> I've managed to implement a very dirty hack whereby I just delay the 
>> function using $timeout which gives the data time to load. While this works 
>> I know it isn't a solution as the time required could vary massively, it 
>> needs to be resolved prior to running.
>>
>> I think I'm pretty close I just don't know how to complete the final 
>> step. Any pointers would be much appreciated.
>>
>>
>>       $scope.locations = GetData.query();
>>                   
>>       var init;
>>
>>       init = function() {
>>         //do some stuff
>>       };
>>       
>>       var defer = $q.defer();
>>             
>>       defer.promise
>>        .then(function () {
>>        init();
>>       });
>>             
>>       $timeout(function() {
>>        defer.resolve();
>>       }, 1000);
>>
>>
>> Many thanks
>>
>> Antony
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to