angular.js - AngularJS中对Controller与Service进行分层设计与编码
黄舟
黄舟 2017-05-15 17:08:29
0
1
540

最近看到说在controller中进行数据处理不是很合适,所以就去学习了Controller与Service进行分层设计与编码,参考了http://www.jianshu.com/p/1e1a...,但是我在使用过程遇到的一个问题就是在Service层处理通讯回调,将业务回调传递给Controller层这种方式调用$http服务的时候,如何传递请求参数呢?代码如下:

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;
    }
}
}]);
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(1)
PHPzhong

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;
    }
}
}]);
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan