0
APIを呼び出す角度のあるプロジェクトがあります。返された結果から値を参照する方法を理解しようとしており、console.logの結果を調べることでそれを把握しようとしています。ここでコンソールの結果から値のパスを特定します。
私のサービスコールさ:
var getUserCampaigns = function(userId){
return $q(function(resolve, reject){
$http.get(API_ENDPOINT.url + '/campaign/user/' + userId).then(function(result){
if(result.status !== 200) {
reject(result);
} else {
resolve(result.data);
console.log('from service: ', result);
}
},function(error){
console.log('There was an error in getting user campaigns: ', error);
reject(error);
});
});
};
ここでは、APIの呼び出しによって返されるものです:私のコントローラで
Returned campaign: e
$$state: Object
status: 1
value: Array[2]
0: Object
__v: 0
_id: "583bc4f3bbb04f2b65a34ebc"
description: "This is my description"
endDate: "2016-11-28T05:47:31.261Z"
goalAmount: 23000
mainImage: "image.gif"
ownerId: "58352f5d2632c371aa951be7"
postedOn: "2016-11-28T05:47:31.261Z"
startDate: "2016-11-28T05:47:31.261Z"
subtitle: "subtitle here see"
title: "Title of my campaign"
、私はこのような結果を参照しよう:
getUserCampaigns:function(){
this.campaigns = CampaignService.getUserCampaigns(self.userId);
console.log('Value: ' + this.campaigns.title);
}
しかし、コンソールログの「値」が「未定義」に戻ります。
私には何が欠けていますか?
ありがとうございました。 APIに非同期呼び出しを行うために$ qを使用していました。あなたの提案は物事をかなり単純化しますが、私はデフォルトの$ http。(動詞)がデフォルトで同期していると思います。そうじゃないの? – cnak2
この場合、.then()が原因ですが、応答データを処理できるようにする必要があると想定しています。 – jbrown