0

次のようにすると気付きました。

var myItem = getObject();
console.log( myItem );

function getObject()
{
  var def = $q.defer();
  $http.get('my_url').success(function(result)
   {
      def.resolve( result); 
   } );

  return def.promise;
}

これが発生すると、ajax リクエストは期待どおりに行われますが、実際には、ajax リクエストによって返されたすべての json データが添付されconsole.logた値を持つ promise がログに記録されます。$$v

したがって、promise オブジェクトを実際に返された json データに変換するのではなく、$$v変数として追加するだけです。

この動作を変更して、オブジェクトを完全に結果に変換する方法はありますか?

4

1 に答える 1

1

$http.get はすでに promise を返しているので、次のようにすることができます:

function getObject()
{
   return $http.get('my_url')
}

次のコードでは、console.log は promise が解決されるのを待たず、prommise オブジェクトを出力するだけです:

var myItem = getObject();
console.log( myItem );

代わりに、コールバック関数を渡す必要があります。

getObject().success(function(data){
  $scope.myVar = data;
}
于 2013-08-28T06:52:19.107 に答える