J'ai ce que je pense être une question très évidente, mais je n'ai trouvé aucune réponse nulle part.
J'essaie juste de charger des données JSON de mon serveur dans le client. En ce moment, j'utilise JQuery pour le charger avec un appel AJAX (code ci-dessous).
<script type="text/javascript">
var global = new Array();
$.ajax({
url: "/json",
success: function(reports){
global = reports;
return global;
}
});
</script>
Ceci est situé dans le fichier html. Cela fonctionne jusqu'à présent, mais le problème est que je veux utiliser AngularJS. Maintenant, alors que Angular CAN utilise les variables, je ne peux pas charger le tout dans une variable afin que je puisse utiliser un pour chaque boucle. Cela semble être lié au "$ Scope", qui se trouve généralement dans le fichier .js.
Le problème est que je ne peux pas charger le code d'autres pages dans un fichier .js. Chaque exemple d'Angular ne montre que des trucs comme ceci:
function TodoCtrl($scope) {
$scope.todos = [
{text:'learn angular', done:true},
{text:'build an angular app', done:false}];
Donc, c'est utile, si IA) Vous voulez taper tout cela à la main, ET B) Si je sais à l'avance quelles sont toutes mes données ...
Je ne sais pas à l'avance (les données sont dynamiques) et je ne veux pas les saisir.
Donc, quand j'ai essayé de changer l'appel AJAX en Angular en utilisant $ Resource, cela ne semble pas fonctionner. Peut-être que je ne peux pas le comprendre, mais c'est une requête GET relativement simple pour les données JSON.
tl: dr Je ne peux pas faire fonctionner les appels AJAX pour charger des données externes dans un modèle angulaire.
la source
Réponses:
Comme Kris le mentionne, vous pouvez utiliser le
$resource
service pour interagir avec le serveur, mais j'ai l'impression que vous commencez votre voyage avec Angular - j'y étais la semaine dernière - donc je recommande de commencer à expérimenter directement avec le$http
service. Dans ce cas, vous pouvez appeler saget
méthode.Si vous avez le JSON suivant
Vous pouvez le charger comme ça
La
get
méthode renvoie un objet de promesse dont le premier argument est un rappel de succès et le second un rappel d' erreur .Lorsque vous ajoutez
$http
comme paramètre d'une fonction Angular fait de la magie et injecte la$http
ressource dans votre contrôleur.J'ai mis quelques exemples ici
la source
code
$ http.get ('/ json'). success (function (response) {$ scope.reports = response; getData ();code
ce qui m'intéresse, c'est l'objet de promesse ... Je veux vraiment en savoir plus à ce sujet. J'adore l'idée de celui-ci. L'autre problème que j'ai eu est essentiellement de lancer une boucle sur la requête ajax donc Je peux constamment actualiser "automatiquement" la page. $ timeout ne fonctionne pas pour moi.config
,data
,headers
etstatus
. Les valeurs de ladata
propriété correspondent à ce que vous souhaitez.$scope.todos = res;
ou$scope.todos = res.data;
- la différence est de savoir si vous êtes dans un.then(response)
ou dans un.success(result)
Le.success
est donnéresponse.data
tandis que le.then
reçoit le toutresponse
.Voici un exemple simple de chargement de données JSON dans un modèle angulaire.
J'ai un service Web JSON 'GET' qui renvoie une liste des détails du client, à partir d'une copie en ligne de la base de données Northwind SQL Server de Microsoft .
http://www.iNorthwind.com/Service1.svc/getAllCustomers
Il renvoie des données JSON qui ressemblent à ceci:
..et je veux remplir une liste déroulante avec ces données, pour ressembler à ceci ...
Je veux que le texte de chaque élément provienne du champ "CompanyName" et que l'ID provienne des champs "CustomerID".
Comment le ferais-je?
Mon contrôleur angulaire ressemblerait à ceci:
... qui remplit une variable "listOfCustomers" avec cet ensemble de données JSON.
Ensuite, dans ma page HTML, j'utiliserais ceci:
Et c'est tout. Nous pouvons maintenant voir une liste de nos données JSON sur une page Web, prête à être utilisée.
La clé pour cela se trouve dans la balise "ng-options":
C'est une étrange syntaxe à comprendre!
Lorsque l'utilisateur sélectionne un élément dans cette liste, la variable "$ scope.selectedCustomer" sera définie sur l'ID (le champ CustomerID) de cet enregistrement client.
Le script complet de cet exemple peut être trouvé ici:
Données JSON avec Angular
Mike
la source
J'utilise le code suivant, trouvé quelque part sur Internet, je ne me souviens pas de la source.
la source