Récemment, j'ai vu que le traitement des données dans le contrôleur n'est pas très adapté, je suis donc allé apprendre la conception hiérarchique et le codage du contrôleur et du service auquel j'ai fait référence sur http://www.jianshu.com/p/1e1a. .. , mais un problème que j'ai rencontré lors de l'utilisation est que lorsque la couche Service gère les rappels de communication et transmet les rappels métier à la couche Contrôleur pour appeler le service $http, comment puis-je transmettre les paramètres de requête ? Le code est le suivant :
angular.module('demo')
.service('myService',['$http','$q',function($http,$q){
return {
getData:function(){
var deferred = $q.defer();
var promise = $http.get("xxx");
promise.then(
// 通讯成功的处理
function(answer){
//在这里可以对返回的数据集做一定的处理,再交由controller进行处理
answer.status = true;
deferred.resolve(answer);
},
// 通讯失败的处理
function(error){
// 可以先对失败的数据集做处理,再交由controller进行处理
error.status = false;
deferred.reject(error);
});
//返回promise对象,交由controller继续处理成功、失败的业务回调
return deferred.promise;
}
}
}]);
Votre getData peut recevoir une fonction de rappel en paramètre. Le paramètre de cette fonction de rappel est les données que vous souhaitez transmettre. Injectez ensuite votre service dans votre contrôleur, puis mettez votre autre logique de traitement lors de l'appel de la méthode getData du service. Écrivez simplement la fonction de rappel et transmettez-la à la méthode getData. Il vous suffit d'appeler directement la méthode de rappel entrante après avoir traité les données demandées dans getData et de transmettre les paramètres traités.