2016-12-22 10 views
1

私は、サーバーから情報を取得するangularJsのサービスを使用しています。郵便配達を使用して 私は文字列を使用して、サーバーの応答このURL http://localhost:8080/api/public/v1/indirizzo/zona?stradaId=5786&civico=53rを呼び出す場合0480170061900.

私のサービスは、私はすべて

function searchZona(stradaId, numeroCivico){ 
      vm.stradaId = stradaId; 
      return Indirizzo.zona({stradaId: stradaId, civico: numeroCivico}).$promise.then(function(data){ 
       vm.zona = data; 
       console.info("ZONA ID: ", vm.zona); 
       return data; 
      }, function(error){ 
       AlertService.error(error.data.message); 
      }); 
     } 

、このように「透明帯」と呼ぶ私のコントローラで

var resourceUrl = 'api/public/v1/indirizzo/:type'; 

    return $resource(resourceUrl, {}, { 
     civico: { 
      method: 'GET', 
      isArray: false, 
      params: { 
       type: 'civico' 
      }, 
      cache: true 
     }, 
     autocomplete: { 
      method: 'GET', 
      isArray: true, 
      params: { 
       type: 'autocomplete' 
      }, 
      cache: true 
     }, 
     zona: { 
      method: 'GET', 
      isArray: falsem, 
      params: { 
       type: 'zona' 
      }, 
      cache: true, 
      transformResponse: [] 
     } 
    }); 

です正しく動作しますが、vm.zonaにはこの情報があります

{"0":"0","1":"4","2":"8","3":"0","4":"1","5":"7","6":"0","7":"0","8":"6","9":"1","10":"9","11":"0","12":"0"} 

なぜですか?これはサーバーの答えのような文字列で変換することは可能ですか?

+0

を使用するために、配列やオブジェクトのいずれかに応答を変換する必要があり、zona.isArrayはfalsemに設定されています - これはタイプミスですか?そうでなければ、ファルセムの価値は何ですか? – IAmDranged

+0

はい、タイプミスです。ごめんなさい – Dennis

+0

'$ resource'サービスは文字列レスポンスでは機能せず、オブジェクトや配列に対してのみ機能します。文字列を取得する場合は、 '$ http'サービスを使用してください。 – georgeawg

答えて

0

$resourceオブジェクトメソッドを呼び出すと、すぐに空の参照(オブジェクトまたは配列isArray)が返されることに気づくことが重要です。データがサーバーから戻されると、既存の参照に実際のデータが取り込まれます。

AngularJSフレームワークでは、angular.copyを使用して参照を設定しています。ソースがオブジェクトまたは配列でない場合は、何もコピーされません。

transformResponse関数は、文字列の応答を変換することができ、それが$リソースアクションオブジェクトパラメータでangular.copy

関連する問題