w3schools understanding then reject promises new for example ejemplo dummies javascript angularjs

javascript - understanding - Cómo eliminar $ promise y $ resolvió del objeto json



promises javascript w3schools (10)

¿Está utilizando isArray o .query() con su objeto $resource ?

De los documentos de $ resource: isArray – {boolean=} – If true then the returned object for this action is an array.

ACTUALIZAR:

Si está usando $resource correctamente, algunas de las opciones que tiene son:

1) Haga que el backend devuelva los datos contenidos dentro de un objeto, por ejemplo. { data: [] } lugar de solo una matriz.

2) Si eso no es posible, use la devolución de llamada de $resource.query() , por ejemplo.

MyResource.query({ myParams: ''something''}, function(result) { // Do something with the plain result });

Estoy usando $ resource en angular para obtener el objeto json y su estructura se define a continuación

[ { "id": 0, "name": "Type1" }, { "id": 1, "name": "Type 2" } ]

después de obtener los datos ... console.log (jsonObject) me da

[Resource, Resource, $promise: Object, $resolved: true]

¿Cómo puedo eliminar $ promesa y $ resuelto del objeto resultante? Intenté angular.fromJson (json) pero todavía veo que estos objetos todavía existen.


A partir de esta respuesta , parece que yourResource.toJSON() está disponible.


Correcto, me enfrenté al mismo problema varias veces y siempre terminé usando $ http en lugar de $ resource, sin embargo , hoy decidí tratar y lidiar con este problema. Espero que alguien también encuentre útil este día.

Entonces, después de recibir su objeto con $ promesa dentro de él, lo que hace es usar angular.copy(data) , así:

someService.getSomething($scope.someId).$promise.then(function (data) { if (data) { $scope.dataWithoutPromise = angular.copy(data); } });

Después de eso, verá que su dataWithoutPromise solo contiene los objetos que necesita, y $ promesa y $ resuelto se han ido.


Ejemplo de mi proyecto

Diary.getSharedWithMe(function(data) { delete data.$promise; delete data.$resolved; _self.sharedDiariesWithMe = data; }, function(error) { console.log(error) });


Estoy buscando la misma respuesta, pero en este momento solo conozco este feo truco:

Para escribir una func como esta:

function cleanResponse(resp) { return JSON.parse(angular.toJson(resp)); }

y llámalo en cada consulta (fea, sí):

function getSmt() { Resource.get({}, function (data) { $scope.some = cleanResponse(data); }, function (responce) { //handle error }) }

Seré feliz si alguien me enseñara a hacerlo correctamente.


Estoy enfrentando el mismo problema. De hecho, simplemente tiene que usar la misma versión de recurso angular y angular y funcionará a la perfección. Espero eso ayude !


Hice este método reutilizable rápido para angular.toJson (Las propiedades con $$ angular.toJson ):

yourApp.factory(''Service'', [''$resource'', function ($resource) { return $resource(''your/rest/api/path''); }]); yourApp.factory(''commonServices'', function () { return { toJson : function(response){ return JSON.parse(angular.toJson(response)); //*or* //return angular.toJson(response); } });

Y luego algo como esto en tu controlador:

yourApp.controller(''Controller'', [''$scope'', ''Service'',''commonServices'', function ($scope, Service, commonServices) { Service.get().then(function (data) { $scope.myData = commonServices.toJson(data); }); });

La forma más sencilla es agregar angular.toJson en el controlador.

yourApp.controller(''Controller'', [''$scope'', ''Service'', function ($scope, Service, commonServices) { Service.get().then(function (data) { $scope.myData = angular.toJson(data); }); });


Intenta codificar algo como esto en tu servicio:

yourApp.factory(''Service'', [''$resource'', function ($resource) { return $resource(''your/rest/api/path''); }]);

Y luego algo como esto en tu controlador:

yourApp.controller(''Controller'', [''$scope'', ''Service'', function ($scope, Service) { Service.get().then(function (data) { $scope.myData = data; }); });


Por favor simplemente haga esto:

jsonObject. $ promise = undefined; jsonObject. $ resolvió = indefinido;

$ promesa y $ resuelto no se eliminarán, pero podrá hacer lo que quiera.


Respuesta corta: angular.fromJson (angular.toJson (resp)); Esto eliminará todas las funciones "específicas del ángulo", etc. y le devolverá un objeto de datos limpio.