angular.js - AngularJS中將Controller與Service進行分層設計與編碼
黄舟
黄舟 2017-05-15 17:08:29
0
1
573

最近看到說在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;
    }
}
}]);
黄舟
黄舟

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

全部回覆(1)
PHPzhong

你的getData可以接收回呼函數作為參數,這個回調函數的參數就是你想要傳遞的數據,然後在你的controller中註入你的這個服務,然後在調用服務的getData方法時把你的其他處理邏輯寫到回呼函數傳給getData方法就行了,你只要在getData中處理完請求的資料後直接呼叫傳入的回呼方法,把處理好的參數傳入就行了。


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;
    }
}
}]);
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板