Option 1 - Use the Promises API
angular.module('myApp').factory('myhttpserv', function ($http) { return $http.get('http://my.ip.address/getUser?u=3', { cache: true }); });
Controller:
angular.module('myApp').controller('myCtrl', function ($scope, myhttpserv) { myhttpserv.then(function(response){ console.log(response.data); }); });
Option 2 - Using Route Resolution
angular.module('myApp', ['ngRoute']).config(['$routeProvider', function($routeProvider) { $routeProvider. when('/myCtrl', { templateUrl: 'myView.html', controller: 'myCtrl', resolve: { load: function (myhttpserv) { return myhttpserv; } }); }]);
Services:
angular.module('myApp').factory('myhttpserv', function ($http) { var data = {}; var url = "http://my.ip.address/"; var promise = $http.get(url + 'getUser?u=3', { cache: true }).then(function (response) { data = response.data; }); return data; });
Controller:
angular.module('myApp') .controller('myCtrl', function ($scope, myhttpserv) { console.log(myhttpserv.data.var1); console.log(myhttpserv.data.var1); etc... });
Option 3 - Use the $ interval service
angular.module('myApp').factory('myhttpserv', function ($http) { var data = {}; var url = "http://my.ip.address/"; var promise = $http.get(url + 'getUser?u=3', { cache: true }).then(function (response) { data = response.data; }); return data; });
Controller:
angular.module('myApp').controller('myCtrl', function ($scope, $interval, myhttpserv) { $scope.intervalPromise = $interval(function(){ if (Object.keys(myhttpserv.data).length!=0) { console.log(myhttpserv.data); $interval.cancel($scope.intervalPromise); } }, 100); });