Maison > Questions et réponses > le corps du texte
Deux services sont définis dans le projet, get task
et project
, et si nous rassemblions leurs données dans le contrôleur puis attribuions des valeurs. Actuellement, j'utilise
js
taskService.get({id:id},function(data1){ //... projectService.get({id:id},function(data2){ //里面赋值的操作很长 ... }) })
Pourriez-vous s'il vous plaît me dire comment écrire la méthode $q ? J'utiliserai cette opération d'acquisition de données dans de nombreux endroits. Comment puis-je la réutiliser ?
滿天的星座2017-05-15 16:54:24
Je l'ai écrit selon votre demande, vous pouvez voir le code ci-dessous :
javascript
myApp.controller("MyController", ["$q", "taskService", "projectService", function($q, taskService, projectService){ var deferred = $q.defer(); var promise = deferred.promise; deferred.resolve( // 获取你要处理的对象 var result = yourMethod.get({id: id}); ); deferred.reject( // 获取不到是打印错误 ) promise.then(function(result){ // 如果经过taskService处理的数据还需要projectService进行处理的话,返回这个结果 var obj = taskService.func(result); return obj; },function(error){ // 错误处理 }) .then(function(result){ // 用projectService处理获取到的对象 projectService.func(result); },function(error){ // 错误处理 }); }]);
Si vous souhaitez le réutiliser, vous pouvez traiter le tout comme un service. Comme je ne connais pas votre code spécifique, c'est difficile à dire.
伊谢尔伦2017-05-15 16:54:24
Vous pouvez ajouter une méthode dans le service pour obtenir deux méthodes en même temps, par exemple :
js
// someService 中 伪代码 someService.getAll = function(id) { var pmo = $q.all([taskService.get({id:id}), projectService.get({id:id})]); // 根据情况,可以写下边的代码,也可以直接返回这个pro pmo.then(....) }
怪我咯2017-05-15 16:54:24
taskService.sub1 = function(post_data, callback) {
projectService.get(post_data, function(rsp){
if(angular.isFunction(callback)) {
callback(rsp);
}
}
}
taskService.sub1({ id : 1 }, function(rsp){
//里面赋值的操作很长
});