2016-07-07 9 views
-3

理由のために、私はJQuery直接DOM操作で私のアプリを書くことを好む。しかし、私は、角度のある$ httpサービスは$ ajaxメソッドよりはるかに優れていると思います。非角形Webアプリケーションから$ httpを呼び出すにはどうすればよいですか?jqueryの角度サービスを使用

$ httpへの参照をグローバルスコープにコピーすることだけを目的としたダミーのapp/controllerを作成できるとします。

<div ng-app="xx" ng-controller="yy"/> 
<script> 
    var myhttp = null; 
    angular.module('xx',[]).controller('yy', function($http) { myhttp = $http; }); 
</script> 

もっと簡単な方法はありますか?

+2

こんにちはJohn、現在、あなたは$ httpの角度だけを読み込んでいます。私はあなたがどちらか角度またはjqueryのいずれかで完全に行くことを選択することをお勧めします。両方を混ぜることはあまり良くありません.HTMLサービスは特に目立つように構築され、他の場所で使われることはありません。$ダイジェストサイクルや他の多くの部分が好きです。 $ httpの –

答えて

1

Angularの$ httpインターフェイスを実装するjQueryの$ .ajax用のアダプタを作成します。

あなたの現在のアプローチは最適ではありません。ご存知のように、$httpは、AngularのDI実装と緊密に結合されています。

jQueryのAjaxメソッドよりもAngularJS $httpサービスのほうが好きですか?どちらも約束を返す。

+0

では、$ ajaxでは混乱しますが、約束は一貫したパラメータ(応答)を持ちますが、時にはjqxhrです。時には最初に、場合によっては3番目に。時々activex。さらに、私は$ httpに依存するコードをテストしました。私は$ ajaxを使うためにそれを書き直したくありません。しかし私はあなたの提案が好きです。私はそれをします。 –

0

私が書いたコードは、Martinのアドバイスに従っています。完全にテストされていません。

// This is a wrapper to cause the $.ajax api to act like the $http api (mostly) 
function fake$http() { 
    'use strict'; 
    var $http = function (settings) { 
     return $.ajax(settings) 
     .then(function (data, status, jqxhr) { 
      return { 
       data: data, 
       status: jqxhr.status, 
       config: settings, 
       statusText: jqxhr.statusText 
      }; 
     }, function (jqxhr) { 
      return { 
       data: jqxhr.responseText, 
       status: jqxhr.status, 
       config: settings, 
       statusText: jqxhr.statusText 
      }; 
     }); 
    }; 

    $http.get = function (url, config) { 
     return $http($.extend({ url: url, method: 'GET' }, config)); 
    }; 
    $http.post = function (url, data, config) { 
     return $http($.extend({ url: url, method: 'POST', data: data }, config)); 
    }; 
    $http.put = function (url, data, config) { 
     return $http($.extend({ url: url, method: 'PUT', data: data }, config)); 
    }; 
    $http.delete = function (url, config) { 
     return $http($.extend({ url: url, method: 'DELETE' }, config)); 
    }; 
    return $http; 
} 

response.headerが見つかりません。コルス、jsonpなどの他の多くの違い

関連する問題