2016-04-14 27 views

答えて

2

私は$resourceを約束することにより、オブジェクトリターンの内側(ないオブジェクト形式で)データが含まれていない理由はわからないんだけど、それは以下のような結果を表示します

e {$promise: Promise, $resolved: true} // 1003021043401956 isn't included there 

私は、要求がサーバーから返されたオブジェクトを期待していると思います。したがって、オブジェクトを返さない場合は、応答に同じものは含まれません

この問題を解決するには2つの方法があります。

  1. {'data': '1003021043401956'}
  2. のようなオブジェクト形式のデータは、それが約束オブジェクトを返す前に修正すること、リソースの内部で独自のgetリクエストオブジェクトを作成して返しています。

    var apiRequest = $resource("https://live.reddcoin.com/api/addr/:address/balance", {}, { 
        get: { 
         method: 'GET', 
         transformResponse: function(response){ 
         return {data: response}; //creating object 
         } 
        } 
    }); 
    

Fiddle

1

はこれを試してみてください:

.controller('TwoController', function($scope, apiData){ 
    apiData.full('RszZrK51ur5G67y3Wy6niTnawdYYdBRZEq').then(function(data){ 
     console.log(data); 
     $scope.price = data; 
    }); 
}); 

は約束が連鎖していることに注意してください。したがって、成功コールバックにdataを返しても、thenの結果は(内的結果としてdataを使用して)約束です。

の作業のコードスニペット:

angular.module('AppName', ['ngResource']) 
 

 
.factory('apiData', ['$resource', function ($resource) { 
 
    var apiRequest = $resource("https://live.reddcoin.com/api/addr/:address/balance"); 
 
    return { 
 
     full: function(address){ 
 
      return apiRequest.get({address: address}).$promise 
 
      .then(
 
       function(data){ console.log(data); return data;}, 
 
       function(){ return 'error'; } 
 
      ); 
 
     } 
 
     } 
 
}]) 
 

 
.controller('TwoController', function($scope, apiData){ 
 
    apiData.full('RszZrK51ur5G67y3Wy6niTnawdYYdBRZEq').then(function(data){console.log(data); $scope.price = data;}); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<script src="https://code.angularjs.org/1.2.23/angular-resource.min.js"></script> 
 
<div ng-app="AppName" ng-controller="TwoController">{{price}}</div>

+0

はい、しかし、 'data'が解決約束から返されたデータである必要があり、そうではありませんか? – neptune

+0

を正確に返しますが、 'then'成功コールバック内でデータを返すことはできず、 'then'の結果をスコープに割り当てます。 「その時」の結果は常に約束です。スコープにデータ自体を割り当てる唯一の方法は、成功したコールバック内でスコープ変数を割り当てることです。 – fikkatra

+0

成功したコールバックの 'console.log(data);'は、私が必要とするデータをコンソールに表示していません。それは私が理解していないものです。 – neptune

関連する問題