J'essaie de transmettre un objet params au service $http.get()
. Mes paramètres ressemblent à ceci:
var params = {
one: value,
two: value
}
Et j'essaie de les transmettre à ma fonction comme suit:
$http.get('/someUrl', params)
.success(function(data) {
// stuff
})
.error(function(data) {
// error stuff
});
Est-ce la bonne façon de s'y prendre?
Le deuxième argument de $http
est un objet config (voir documentation). Parmi les autres propriétés, l'objet config accepte une propriété params
:
{Object.<string|Object>}
- Carte de chaînes ou d'objets qui seront sérialisés avec paramSerializer et ajoutés en tant que paramètres GET. Par conséquent, vous devez passer les paramètres en tant que tels
var config = {
params: {
one: value,
two: value
}
}
$http.get('/someUrl', config).then(...)
Supposons que les valeurs des paramètres soient respectivement '1' et '2', $http
enverra une demande GET à l'URL suivante:
/someUrl?one=1&two=2
En guise de remarque, essayez d'éviter d'utiliser les fonctions success
et error
sur $http
. Ils sont obsolètes à partir d'angle 1.4.4. Utilisez les méthodes then
avec un succès et un rappel d'erreur à la place, ou alors uniquement avec un rappel de succès et catch
.
Pour l’appel, utilisez une usine ou un service que vous pouvez injecter aux contrôleurs dont vous avez besoin. Voici un exemple de paramètres de transmission d’usine
.factory('Chats', function ($http, $rootScope, $stateParams) {
return {
all: function () {
return $http.get('http://ip_address_or_url:3000/chats', { params: { user_id: $rootScope.session } })
}
};
});
Dans votre contrôleur, vous utilisez le service comme ceci
.controller('ChatsCtrl', function ($scope, Chats) {
Chats.all().success(function (response) {
$scope.chats = response;
})
})
J'ai fait face à un problème similaire ces derniers temps et j'ai dû ajouter quelques détails supplémentaires à demander (j'ai utilisé la réponse acceptée avec certains en-têtes):
$http.get(url, {
params: {
paramOne: valueOne,
paramTwo: valueTwo,
...
},
headers: {
'key': 'value'
},
// responseType was required in my case as I was basically
// retrieving PDf document using this REST endpoint
// This is not required in your case,
// keeping it for somebody else's reference
responseType: 'arraybuffer'
}).success(
function(data, status, headers, config) {
// do some stuff here with data
}).error(function(data) {
// do some stuff here with data
});
$ Http documentation suggère que le deuxième argument de la méthode $ http.get est un objet que vous pouvez transmettre avec cet objet "param".
Essayez quelque chose comme ça:
$http.get('/someUrl', {params: params})
.success(function(data) {
// stuff
})
.error(function(data) {
// error stuff
});