object - Angularjs; use $http in service returns reference instead of actual data -


i'm using services directive in angularjs not factory , need populate json file local variable;

/* contains projects on town */ lemaireservicess.service('cityservice', function($http) {      // json regions , cities loader     this.cities = [];      // initcities      this.initcities = function() {         this.cities = $http.get('data/census/cities.js').success(function(data) {             return data;         });         return this.cities;     };      // city info     this.getcity = function() {         return this.cities;     }; }); 

and in controller have

// saved game controller lemairecontrollers.controller('gamecorectrl', function($scope, cityservice) {      /* control town project slides */     cityservice.initcities();     $scope.city = cityservice.getcity();      console.log($scope.city); }); 

but instead of returning actual data, returns;

object {then: function, catch: function, finally: function, success: function, error: function} 

you can use watch make work (see plunker)

var app = angular.module('plunker', []);  app.controller('mainctrl', function($scope,cityservice) {   //$scope.cities = [];   $scope.service = cityservice;   cityservice.initcities();     $scope.$watch('service.getcity()', function(newval) {     $scope.cities = newval;     console.log(newval)   });   });  app.service('cityservice', function($http) {   var = this;   this.cities = [];    this.initcities = function() {       $http.get('data.js').success(function(data) {           that.cities = data.cities;       });   };    this.getcity = function() {       return this.cities;   }; }); 

Comments

Popular posts from this blog

html - Sizing a high-res image (~8MB) to display entirely in a small div (circular, diameter 100px) -

java - IntelliJ - No such instance method -

identifier - Is it possible for an html5 document to have two ids? -