2016-07-18 18 views
2

私は$resourceを使ってサーバーに安らかなリクエストをしています。 私のコードがあるオブジェクトのプロパティにアクセスできない

service.js

.factory('userServ',function($resource){ 
    return $resource('url/:id',{id:'@id'},{ 
      me: 'GET',isArray:false,url:'url2'} 
}); 
}) 

私はこの

$scope.userDetails = userService.me(); 
console.log($scope.userDetails) // gives all the details of the user 
console.log($scope.userDetails.username) // gives undefined. But username is there in the object 

のようなコントローラでこのサービスを使用していますが、どのように私がアクセスできるオブジェクト

+1

サービスメソッド呼び出しの上に '.then'コールバックを置く必要があります。そのコールバックの中に成功とエラーコールバックがあります –

+1

@PankajParkarなぜ答え​​を投稿しないのですか? – dfsq

答えて

0

からのものあなたのaprroach、約束は解決されません。したがって、データにアクセスすることはできません。ここで 、

$scope.userDetails = userService.me(); 


約束は解決されません。オブジェクトを展開すると、resolved:falseが表示されます。あなたは$scope.userDetailsの中にあるデータを見ることができますが、あなたは必要です。

これで、約束が解決するまで待つ必要があります。このためには.thenメソッドを使用できます。

var CallApi = userService.me().$promise; //Promise yet to be Resolved 
     CallApi.then(function (res)){   //Promise resolved here 
     $scope.userDetails = res; 
     console.log($scope.userDetails) 
     console.log($scope.userDetails.username) 
     } 
    }) 
+1

詳細を編集してください。コード専用と「試してください」の回答は、検索可能なコンテンツが含まれていないため、推奨されません。なぜ誰かが「これを試してみる」べき理由を説明しません。 – abarisone

+0

@abarisone私はあなたの提案に従います – Ved

0

リソースオブジェクトは約束を返します。ここではそれについての詳細を読む:それからデータを取得するためにhttps://docs.angularjs.org/api/ngResource/service/$resource

var myResource = $resource('url/:id',{id:'@id'},{ 
     me: 'GET',isArray:false,url:'url2'} 
}); 

はあなたが約束自体のメソッドを呼び出す必要があります。彼らはGET、PUT、SAVEです。

しかし、ここではGETしか言及していません。だから、

あなたの約束が今

var myResult = []; 
myResource.then(function(data){ 
    myresult = date; 
}); 

を呼び出すことによって解決した場合、「myResult」ここはあなたの返されたデータを持っています。

はまた、この()のように呼び出すことができます。

.get({userId:123}) 
.$promise.then(function(user) { 
    $scope.user = user; 
}); 

は再び私はより良い理解を得るために、角のドキュメントを読むことをお勧めします。

関連する問題