0
  $scope.results = searchService.CallWeb($scope.userName);

angularjsコントローラー内で上記のコード行を使用しています。このメソッドsearchService.CallWeb()は、jquery ajax 呼び出しを行う angularjs サービス内にあります。Jquery ajax 呼び出しは正常に実行されますが (結果を jquery success 内のアラートにスローしています)、サービス メソッドsearchService.CallWeb()は ajax 呼び出しからの応答を取得する前に戻ります。したがって、結果をコントローラーに戻すことができません。これを修正するにはどうすればよいですか?

4

1 に答える 1

1

1) コールバック関数をサービスに送信し、jQuery からの ajax 呼び出しが完了したら、コールバックを呼び出します。送信するコールバックで、配列にデータを入力するか、アラートを呼び出すか、必要なことを何でも行います。

searchService.CallWeb($scope.userName, function(data){
  $scope.results = data;
});

2) Angular リソースを使用してこれを行うこともできます。jQuery ajax 呼び出しをリソース呼び出しに置き換え、サービスから値を返す代わりに、リソースが提供する promise を返します。次に、コントローラーでプロミスを使用して、データを取得し、それを使って何でもできます。

于 2013-08-28T03:54:18.140 に答える