Tengo lo que creo que es probablemente una pregunta muy obvia, pero no pude encontrar una respuesta en ninguna parte.
Solo estoy tratando de cargar algunos datos JSON de mi servidor en el cliente. En este momento, estoy usando JQuery para cargarlo con una llamada AJAX (código a continuación).
<script type="text/javascript">
var global = new Array();
$.ajax({
url: "/json",
success: function(reports){
global = reports;
return global;
}
});
</script>
Este se encuentra en el archivo html. Funciona hasta ahora, pero el problema es que quiero usar AngularJS. Ahora, mientras Angular PUEDE usar las variables, no puedo cargar todo en una variable, por lo que puedo usar un para cada ciclo. Esto parece estar relacionado con el "$ Scope", que normalmente se encuentra en el archivo .js.
El problema es que no puedo cargar código de otras páginas en un archivo .js. Cada ejemplo de Angular solo muestra cosas como esta:
function TodoCtrl($scope) {
$scope.todos = [
{text:'learn angular', done:true},
{text:'build an angular app', done:false}];
Entonces, esto es útil, si IA) Quiero escribir todo esto a mano, Y B) Si sé de antemano cuáles son todos mis datos ...
No lo sé de antemano (los datos son dinámicos) y no quiero escribirlos.
Entonces, cuando intenté cambiar la llamada AJAX a Angular usando $ Resource, no parece funcionar. Tal vez no pueda resolverlo, pero es una solicitud GET relativamente simple para datos JSON.
tl: dr No puedo hacer que las llamadas AJAX funcionen para cargar datos externos en un modelo angular.
fuente
Respuestas:
Como menciona Kris, puede usar el
$resource
servicio para interactuar con el servidor, pero tengo la impresión de que está comenzando su viaje con Angular (estuve allí la semana pasada), así que recomiendo comenzar a experimentar directamente con el$http
servicio. En este caso, puede llamar a suget
método.Si tiene el siguiente JSON
Puedes cargarlo así
El
get
método devuelve un objeto de promesa cuyo primer argumento es una devolución de llamada exitosa y el segundo una devolución de llamada de error .Cuando agrega
$http
como parámetro de una función, Angular lo hace mágico e inyecta el$http
recurso en su controlador.He puesto algunos ejemplos aquí
fuente
code
terminé usando el servicio $ http en su lugar ... aunque de una manera ligeramente diferente ... $ http.get ('/ json'). success (function (response) {$ scope.reports = response; getData ();code
lo que es interesante para mí, es el objeto de promesa ... Realmente quiero aprender más sobre eso. Me encanta la idea. El otro problema que he tenido es básicamente ejecutar un bucle en la solicitud ajax, así que Puedo actualizar constantemente la página "automágicamente". $ timeout no me ha funcionado.config
,data
,headers
ystatus
. Los valores de ladata
propiedad son los que desea.$scope.todos = res;
o$scope.todos = res.data;
- la diferencia es si estás en a.then(response)
o en.success(result)
The.success
se daresponse.data
mientras que.then
se da el completoresponse
.Aquí hay un ejemplo simple de cómo cargar datos JSON en un modelo angular.
Tengo un servicio web JSON 'GET' que devuelve una lista de detalles del cliente, de una copia en línea de la base de datos Northwind SQL Server de Microsoft .
http://www.iNorthwind.com/Service1.svc/getAllCustomers
Devuelve algunos datos JSON que se ven así:
... y quiero completar una lista desplegable con estos datos, para que se vea así ...
Quiero que el texto de cada elemento provenga del campo "CompanyName" y que el ID provenga de los campos "CustomerID".
¿Cómo lo haría?
Mi controlador angular se vería así:
... que llena una variable "listOfCustomers" con este conjunto de datos JSON.
Luego, en mi página HTML, usaría esto:
Y eso es. Ahora podemos ver una lista de nuestros datos JSON en una página web, lista para ser utilizada.
La clave de esto está en la etiqueta "ng-options":
¡Es una sintaxis extraña para entenderlo!
Cuando el usuario selecciona un elemento en esta lista, la variable "$ scope.selectedCustomer" se establecerá en el ID (el campo CustomerID) de ese registro de Cliente.
El script completo para este ejemplo se puede encontrar aquí:
Datos JSON con Angular
Miguel
fuente
Utilizo el siguiente código, que se encuentra en algún lugar de Internet, aunque no recuerdo la fuente.
fuente