Rumah > Soal Jawab > teks badan
Baru-baru ini, saya melihat bahawa pemprosesan data dalam pengawal tidak begitu sesuai, jadi saya pergi untuk mempelajari reka bentuk hierarki dan pengekodan Pengawal dan Perkhidmatan yang saya rujuk kepada http://www.jianshu.com/p/1e1a. .. , tetapi satu masalah yang saya hadapi semasa penggunaan ialah apabila lapisan Perkhidmatan mengendalikan panggilan balik komunikasi dan menghantar panggilan balik perniagaan ke lapisan Pengawal untuk memanggil perkhidmatan $http, bagaimanakah cara saya lulus parameter permintaan? Kodnya adalah seperti berikut:
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;
}
}
}]);
PHPz2017-05-15 17:10:29
GetData anda boleh menerima fungsi panggil balik sebagai parameter Parameter fungsi panggil balik ini ialah data yang anda ingin hantarkan kemudian masukkan perkhidmatan anda dalam pengawal anda, dan kemudian letakkan logik pemprosesan anda yang lain apabila memanggil kaedah getData perkhidmatan. Hanya tulis fungsi panggil balik dan hantar ke kaedah getData Anda hanya perlu memanggil terus kaedah panggil balik masuk selepas memproses data yang diminta dalam getData, dan hantar parameter yang diproses.
angular.module('demo')
.service('myService',['$http','$q',function($http,$q){
return {
getData:function(callback){
var deferred = $q.defer();
var promise = $http.get("xxx");
promise.then(
// 通讯成功的处理
function(answer){
//在这里可以对返回的数据集做一定的处理,再交由controller进行处理
answer.status = true;
deferred.resolve(answer);
...//处理数据,得到data
callback&&callback(data);
},
// 通讯失败的处理
function(error){
// 可以先对失败的数据集做处理,再交由controller进行处理
error.status = false;
deferred.reject(error);
});
//返回promise对象,交由controller继续处理成功、失败的业务回调
return deferred.promise;
}
}
}]);