Comment utiliser la fonction $ .ajax () de jQuery dans un contrôleur angularJS (au lieu de $ http intégré) afin que les valeurs de $ scope soient accessibles ultérieurement à partir d’un affichage / modèle?
J’ai ce contrôleur angularJS un peu minimaliste:
function UserCtrl($scope, $http) { $.ajax('http://localhost:8080/admin/user/johndoe').success(function(data) { $scope.user = data; }); }
Et dans la vue, quelque chose comme:
Hello, {{ user.Username }}
Cependant, le
console.log()
dans le contrôleur me dit que $ scope.user est rempli exactement comme je le souhaite.
Maintenant, si je remplace l’ $.ajax()
par $http.get()
tout se passe comme prévu.
Je connais $http
qui est intégré à angularJS, mais comme je ne pars pas à zéro mais que j’ai déjà beaucoup de code qui utilise jQuery, je veux m’en tenir à jQuery pour $ .ajax ().
Des idées?
JQuery ajax étant hors du monde angular, vous devez envelopper votre affectation $ scope dans
$scope.$apply(function(){ $scope.user = data; });
$ Http angular est livré pré-construit avec le mécanisme de déclenchement du cycle de digestion.