1

Can someone crate an example of how I could set a $scope variable from a outside the controller using a factory or service that uses AJAX?

Every time I have tried the AJAX variable returns undefined because the request has not returned yet, so $scope.var is undefined. After the AJAX request returns, $scope.var is still undefined even if I call the service from the Controller. Please help.

user3704920
  • 617
  • 1
  • 8
  • 19
  • can you show us what you've tried so far? possible duplicate of http://stackoverflow.com/questions/22898927/injecting-scope-into-an-angular-service-function – malifa Nov 05 '14 at 18:51
  • Here is an example for you: http://stackoverflow.com/a/26657303/949476. Service method `userService.getUsers` returns promise. Then in controller you do something like this: `userService.getUsers().then(function(users) { $scope.users = users; });` – dfsq Nov 05 '14 at 18:54

1 Answers1

1

Please see demo here http://plnkr.co/edit/JcRY8uHRYaHH33UTH7Bt?p=preview

var app = angular.module("myapp", []);

app.service("dataService", function($http, $q) {

  var data = [];

  function getData() {

    var deffered = $q.defer();
    var request = {
      url: 'data.json',
      method: 'GET'
    };
    $http(request).then(sucess, error);

    function sucess(response) {
      deffered.resolve(response.data);
    }
    function error() {
      deffered.reject();
    }

    return deffered.promise;

  }


  return {
    data: data,
    getData: getData
  }

})
app.controller('MyControl', function($scope, dataService) {

  $scope.data = [];
  dataService.getData().then(function(response) {

    $scope.data = response;
  })
});
sylwester
  • 16,498
  • 1
  • 25
  • 33