¿Cómo ver los datos json de la callback http angularjs?

Puedo ver mis datos json en la consola y quiero verlos en la página html después de la función de botón de clic. Desde mi comprensión, puedo hacer una promesa ($ q) o luego con http o ngResource. Primero quiero hacer http y luego migrar a ngResource. Por alguna razón, mi scope aún no está definido. Tal vez es un ng-init o ng-repetir que estoy perdiendo? ¿Algunas ideas?

var app = angular.module('myApp', []); app.factory('httpq', function($http, $q) { return { get: function() { var deferred = $q.defer(); $http.get.apply(null, arguments) .success(deferred.resolve) .error(deferred.resolve); return deferred.promise; } } }); app.controller('myController', function($scope, httpq) { httpq.get('http://localhost:8080/states') .then(function(data) { $scope.returnedData = data; }) $scope.clickButton = function() { $scope.returnedData; } }); 

ver

  

JSON Data : {{returnedData}}

Usar llamada ajax

Servicio :

 var demoService = angular.module('demoService', []) .service('myService',['$http', function($http) { this.getdata = function(entity){ var promise = $http({ method : 'POST', url : 'services/entity/add', data : entity, headers : { 'Content-Type' : 'application/json' }, cache : false }).then(function (response) { return response; }); return promise; }; }]); 

Controlador :

 var demoService = angular.module('demoService', []) .controller('myctr',['$scope','myService',function($scope,myService){ myService.getdata().then(function(response){ //Success },function(response){ //Error }); }]); 

Ahora puedes ver a tu json en el éxito del controlador

$ http en sí es una promesa, no es necesario crear una nueva promesa. Simplemente devuelva el $ http.get con el éxito escrito allí y gire a la derecha en el controlador en sí. Entonces tu código se verá así:

 app.factory('httpq', function($http) { return { get: function() { return $http.get.apply(null, arguments); } } }); 

Su controlador:

 app.controller('myController', function($scope, httpq) { httpq.get('http://localhost:8080/states').then(function(data) { $scope.returnedData = data; }) $scope.clickButton = function() { $scope.returnedData; } }); 

utilizar

 $scope.returnedData=JSON.parse(data); 

Te dará valores en formato JSON.

No he trabajado con promesa . Pero su código de fábrica parece estar bien.

En el controlador declara tu objeto primero.

Si es solo un objeto declararlo como

 $scope.returnedData = {}; 

Si es array, declararlo como

 $scope.returnedData = []; 

El objeto no será indefinido y los cambios afectarán en HTML