2016-06-01 1 views
1

私たちは、共通エンティティを中心とした一連のカスタムAPIとのやりとりを行うためにファクトリを使用しています。しかし、私がする必要があるのは、ヘッダーに返されたカスタムレスポンスを評価することです。これを行うには、transformResponseを使用する方法があるようです。私が持っているものは働いているようですが、文字通り、同じ定義を何度も繰り返しています。再利用できるように関数を作成しようとしましたが、参照が失敗するようです。私は間違って何をしていますか?各定義に

transformResponse: transResp(data, header, status, config, statusText), 

、その後、これはisJSON直後の関数である:

(function() 
{ 
    'use strict'; 

    angular.module('aumBills', ['ngResource']) 
    .factory('Bills', ['$resource', 
    function($resource) 
    { 
     return $resource(
     '/ua_aumcore/bills/api/v1/bills/:billableEventI', 
     { 
      billableEventI:'@billableEventI' 
     }, 
     { 
      getList: 
      { 
       method: 'GET', 
       isArray: false, 
       transformResponse: function(data, header, status, config, statusText) 
       { 
        var response = {}; 
        if (isJson(data)) 
        { 
         data = angular.fromJson(data); 
         response.data = data; 
        } 
        response.status = status; 
        response.config = config; 
        response.statusText = statusText; 
        return response; 
       }, 
       url: '/ua_aumcore/bills/api/v1/bills/query/' 
      }, 
      getParties: 
      { 
       method: 'GET', 
       isArray: false, 
       transformResponse: function(data, header, status, config, statusText) 
       { 
        var response = {}; 
        if (isJson(data)) 
        { 
         data = angular.fromJson(data); 
         response.data = data; 
        } 
        response.status = status; 
        response.config = config; 
        response.statusText = statusText; 
        return response; 
       }, 
       url: '/ua_aumcore/bills/api/v1/customer/billParties/?partySites=:partySiteIDs', 
       params: {partySiteIDs: '@partySiteIDs'} 
      } 
      //plus about 12 more after this   
     }); 
    }]); 

    function isJson(str) 
    { 
     try 
     { 
      JSON.parse(str); 
     } 
     catch (e) 
     { 
      return false; 
     } 
     return true; 
    } 
})(); 

上記と同じに見えた破ったコードは、私だけは入れ

function transResp(data, header, status, config, statusText) 
    { 
     var response = {}; 
     if (isJson(data)) 
     { 
      data = angular.fromJson(data); 
      response.data = data; 
     } 
     response.status = status; 
     response.config = config; 
     response.statusText = statusText; 
     return response; 
    } 
+1

私たちに失敗したコードを教えてください。私たちがあなたがしたことを見ない限り、あなたが間違っていたことを伝えることはできません。 – georgeawg

+0

コードを追加しました。これは単に関数呼び出しを置き換えたものです。コンソールは、transformResponseの最初の定義で「データが定義されていません」と吐き出します。 –

答えて

1

は、変数として使用したいtransformResponse関数を定義し、その変数を定義に取り入れるように見えます:

(function() 
{ 
    'use strict'; 

    angular.module('aumBills', ['ngResource']) 
    .factory('Bills', ['$resource', 
    function($resource) 
    { 
     var transResp = function(data, header, status, config, statusText) 
     { 
      var response = {}; 
      if (isJson(data)) 
      { 
       data = angular.fromJson(data); 
       response.data = data; 
      } 
      response.status = status; 
      response.config = config; 
      response.statusText = statusText; 
      return response; 
     }; 

     return $resource(
     '/ua_aumcore/bills/api/v1/bills/:billableEventI', 
     { 
      billableEventI:'@billableEventI' 
     }, 
     { 
      get: 
      { 
       method: 'GET', 
       isArray: false, 
       transformResponse: transResp, 
       url: '/ua_aumcore/bills/api/v1/bills/:billableEventI' 
      }, 
      getList: 
      { 
       method: 'GET', 
       isArray: false, 
       transformResponse: transResp, 
       url: '/ua_aumcore/bills/api/v1/bills/query/' 
      } 
      //and so on and so forth 
     }); 
    }]); 

    function isJson(str) 
    { 
     try 
     { 
      JSON.parse(str); 
     } 
     catch (e) 
     { 
      return false; 
     } 
     return true; 
    } 
})(); 
関連する問題