rejection possibly angular2 angularjs

angularjs - possibly - angular.copy angular2



AngularJS $ resource error-TypeError: Object#<g> no tiene un método ''push'' (4)

Tengo lo siguiente en mi archivo de controlador:

var Subject = $resource(''/api/TestAccounts/:action'', { applicationId: 3 }, { ''getSelect'': { method: ''GET'', params: { action: ''GetSelect'' } } }); Subject.getSelect({ applicationId: 3 }, function (resp) { $scope.testAccounts = resp; gridData = null; } );

Mi código de servidor se ejecuta y devuelve:

[{"id":5,"name":"xxx"},{"id":6,"name":"yyy"}]

Sin embargo me sale el siguiente error:

TypeError: Object #<g> has no method ''push'' at copy (http://127.0.0.1:81/Scripts/angular.js:577:21)

¿Alguien tiene alguna idea de lo que estoy haciendo mal?


Acabo de cambiar MyService.get(...) a MyService.query(...) porque .get() espera un objeto y .query() espera una matriz.


De forma predeterminada, GET espera un objeto {}, QUERY espera una matriz []. En su caso, la API web devuelve una matriz para GET, por lo que necesita establecer el indicador isArray para GET como verdadero. Si su API web devolvió un objeto, entonces no tendría que restablecer ese indicador porque es el comportamiento predeterminado de GET.


Sé que esta publicación es un poco obsoleta pero encontré una solución cuando me encontré con este problema hoy. Siguiendo la publicación a continuación, implementé la solución de joelwreed (hasta la mitad del hilo). Hace una verificación de que el destino es una matriz antes de intentar empujar, lo que soluciona el problema.

Enlace a la cuestión presentada en github


isArray establecer el parámetro del isArray en verdadero en su definición de recurso si está devolviendo una matriz desde el servidor.

var Subject = $resource(''/api/TestAccounts/:action'', { applicationId: 3 }, { ''getSelect'': { method: ''GET'', isArray: true, params: { action: ''GetSelect'' } } });

Ver: AngularJS $ resource API