Hi,

I have not long started out using AngularJS, and I am having a problem 
getting some data returned in a $http request on a service I have written 
to be used on a $scope property defined in one my controllers.

My service looks like so:

app.factory('DataStoreService', function ($rootScope, $location, $http) {
    var lastReportedEvents = null;
    //For our inital request to server, but for subsequent requests we should 
use the nextURL 
    //property of the previous successful response 
    var locationStoreURL = '/location/GetLastReportedEvents.json';

    return {

        lastReportedEvents: lastReportedEvents,
        getLastReportedEvents: function () {
            $http.get(locationStoreURL)
                .success(function (data, status, headers, config) {

                    if (data.success) {
                        lastReportedEvents = angular.fromJson(data).data;

                        //TO-DO, use the nextURL property on the JSON response 
and set locationStoreURL var in this service

                    }
                    else {
                        console.log('getLocationData ERROR!');
                    }
                })
                .error(function (data, status, headers, config) {
                    console.log('getLocationData ERROR!');
                });

        }


    };
});


When the user logs in to the application I am making the request for data 
in the app run block like so.

app.run(['$rootScope', '$location', 'DataStoreService', function ($rootScope, 
$location, DataStoreService) {


      $rootScope.$on('login', function (event) {
          //console.log('login event detected');
          DataStoreService.getLastReportedEvents();
      });

  }]);


In my controller I have:

app.controller('LocationsController', ['$rootScope', '$scope', 
'DataStoreService', function ($rootScope, $scope, DataStoreService) {

    $scope.locations = DataStoreService.lastReportedEvents;
}]);


So as you can see, I'm just trying to assign a property of my service that 
represents the data returned from the $http request to the $scope on my 
controller that my view is bound to:

<div ng-controller="LocationsController">

  <table class="table table-hover table-condensed">
    <tr ng-repeat="location in locations">
        <td>
            <span>{{location.UnitName}}</span>
            <p>{{location.Location}}</p>
        </td>
    </tr>
  </table ></div>

Nothing appears in my view. I can get it to work by emitting an event in 
the success handler of my request and then assigning to the $scope in my 
controller in an event listener, but this seems a bit backwards to me. I 
thought by injecting a service to a controller, that any changes to the 
service (properties, etc) are broadcast to any controllers using that 
service, or am I mistaken.

I must be missing something fundamental here!

Thanks

-- 
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