Search code examples
javascriptangularjsangularjs-serviceangularjs-controllerangular-services

Factory has two methods, one is $http method with $promise - how to reference the other method from within the first one's success function?


In one of my factories I need to set a variable when data is fetched (through $http) so I can access it in my controller (the intention is to display a spinner image until the data is loaded).

.factory('LoadData', function LoadData($http, $q){
    return {

        getMyData: function(){
            return $http(
                // implementation of the call
            ).then(
                function(response){
                    var myData = response.data;

                    // this should be reference to the other method (getLoadStatus) 
                    // where I want to change its value to "true"

                    // this doesn't work - "this" or "self" don't work either because we're in another function
                    LoadData.getLoadStatus.status = true;
                }
            );
        },
        // by calling the below method from my controller,
        // I want to mark the completion of data fetching
        getLoadStatus = function(){

            var status = null;

            return status;

        }
    }
}

I hope you got the idea - how could this be accomplished? Also, I'm open to any suggestions which are aimed towards a better approach (I want to pick up best practice whenever possible).


Solution

  • I actually decide to use a promise in my controller after calling this service and when data is returned, I am simply making the status true. It seems that is best practice to have a promise returned when calling a service so I should be good.