私はこのシンプルなアプリのwithaの工場とコントローラを持っています。代わりにコンソールに表示されるようにe { $promise=Promise, $resolved=true, toJSON=function(), more...}
を返します。例のAPIリソースから
URL: https://live.reddcoin.com/api/addr/RszZrK51ur5G67y3Wy6niTnawdYYdBRZEq/balance
私はこのシンプルなアプリのwithaの工場とコントローラを持っています。代わりにコンソールに表示されるようにe { $promise=Promise, $resolved=true, toJSON=function(), more...}
を返します。例のAPIリソースから
URL: https://live.reddcoin.com/api/addr/RszZrK51ur5G67y3Wy6niTnawdYYdBRZEq/balance
私は$resource
を約束することにより、オブジェクトリターンの内側(ないオブジェクト形式で)データが含まれていない理由はわからないんだけど、それは以下のような結果を表示します
e {$promise: Promise, $resolved: true} // 1003021043401956 isn't included there
私は、要求がサーバーから返されたオブジェクトを期待していると思います。したがって、オブジェクトを返さない場合は、応答に同じものは含まれません
この問題を解決するには2つの方法があります。
{'data': '1003021043401956'}
のようなオブジェクト形式のデータは、それが約束オブジェクトを返す前に修正すること、リソースの内部で独自のget
リクエストオブジェクトを作成して返しています。
var apiRequest = $resource("https://live.reddcoin.com/api/addr/:address/balance", {}, {
get: {
method: 'GET',
transformResponse: function(response){
return {data: response}; //creating object
}
}
});
はこれを試してみてください:
.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>
はい、しかし、 'data'が解決約束から返されたデータである必要があり、そうではありませんか? – neptune
を正確に返しますが、 'then'成功コールバック内でデータを返すことはできず、 'then'の結果をスコープに割り当てます。 「その時」の結果は常に約束です。スコープにデータ自体を割り当てる唯一の方法は、成功したコールバック内でスコープ変数を割り当てることです。 – fikkatra
成功したコールバックの 'console.log(data);'は、私が必要とするデータをコンソールに表示していません。それは私が理解していないものです。 – neptune