Comment charger json dans mon angular.js ng-model?
J'ai ce que je pense est probablement une question très évidente, mais je ne pouvais pas trouver une réponse, n'importe où.
Je suis juste essayer de charger des données JSON à partir de mon serveur vers le client. Maintenant, je suis à l'aide de 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>
Cela se trouve dans le fichier html. Cela fonctionne tellement bien, mais le problème est que je veux utiliser AngularJS. Maintenant, tout Angulaire POUVEZ utiliser les variables, il est impossible de charger le tout dans une variable afin que je puisse utiliser une boucle for each. Cela semble être lié à l' "$Scope", qui est généralement situé dans le .fichier js.
Le problème est que je ne peux pas charger le code à partir d'autres pages dans un .fichier js. Un exemple de chaque Angulaire ne montre que des trucs comme ça:
function TodoCtrl($scope) {
$scope.todos = [
{text:'learn angular', done:true},
{text:'build an angular app', done:false}];
Si, c'est utile, si je
A) Envie de taper tout cela à la main, ET
B) Si je sais à l'avance ce que toutes mes données...
Je ne sais pas à l'avance (les données dynamiques) et je ne veux pas taper.
Donc, quand j'ai essayé de changer l'appel AJAX Angulaire à l'aide de $Ressource, il ne semble pas fonctionner. Peut-être que je ne peux pas la comprendre, mais il est relativement simple d'OBTENIR la demande de données JSON.
tl:dr je ne peut pas obtenir des appels AJAX au travail afin de charger des données externes dans angulaire du modèle.
- Pouvons-nous voir votre tentative à l'aide de $Ressource? Il doit travailler, donc c'est peut-être plus facile si nous vous aider à déboguer que...
Vous devez vous connecter pour publier un commentaire.
Comme Kris mentionne, vous pouvez utiliser le
$resource
le service à interagir avec le serveur, mais j'ai l'impression que vous commencez votre voyage avec Angulaires - j'y étais la semaine dernière, donc je vous recommande de commencer à expérimenter directement avec le$http
service. Dans ce cas, vous pouvez appeler saget
méthode.Si vous avez le JSON
Vous pouvez le charger comme ce
La
get
méthode retourne un promesse objet quile premier argument est un succès de rappel et la seconde d'un erreur
de rappel.
Lorsque vous ajoutez
$http
en tant que paramètre d'une fonction Angulaire est-il de la magieet injecte le
$http
de ressources dans votre contrôleur.J'ai mis quelques exemples ici
code
$http.get('/json').succès( function(response){ $scope.rapports = réponse; getData();code
ce qui est intéressant pour moi, c'est la promesse d'objet...j'ai vraiment envie d'en savoir plus à ce sujet. J'aime l'idée de celui-ci. L'autre problème que j'ai eu est principalement à l'exécution d'une boucle sur la requête ajax donc je peux constamment "automagiquement" actualiser la page. $timeout n'a pas été de travailler pour moi.config
,data
,headers
etstatus
. Les valeurs dans ladata
propriété sont ce que vous voulez.$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)
La.success
est donnéresponse.data
tandis que le.then
est donné à l'ensemble de laresponse
.Voici un exemple simple de comment charger des données JSON en angle modèle.
J'ai un JSON 'GET' service web qui renvoie une liste des coordonnées du Client, à partir d'une copie en ligne de Microsoft, les Comptoirs SQL Server base de données.
http://www.iNorthwind.com/Service1.svc/getAllCustomers
Il retourne des données JSON qui ressemble à ceci:
..et je veux remplir une liste déroulante avec ces données, ressemble à...
Je veux que le texte de chaque article à venir de la "CompanyName" sur le terrain, et l'ID à venir de la "CustomerID" les champs.
Comment aurais-je le faire ?
Mon Angulaire contrôleur devrait ressembler à ceci:
... qui répond à un "listOfCustomers" variable avec cet ensemble de données JSON.
Puis, dans ma page HTML, j'utilise ceci:
Et c'est tout. Nous pouvons maintenant voir une liste de nos données JSON sur une page web, prêt à être utilisé.
La clé, c'est dans le "ng-options" tag:
C'est une étrange syntaxe pour obtenir votre tête autour de !
Lorsque l'utilisateur sélectionne un élément dans cette liste, le "$champ d'application.selectedCustomer" variable sera mis à l'ID (le champ code client) de l'enregistrement du Client.
Le scénario complet pour cet exemple peut être trouvé ici:
Les données JSON Angulaire
Mike
Je utiliser le code suivant, trouvé quelque part sur internet ne me souviens pas de la source si.