12

AngularJSを初めて試しています。$http.post("url", data)この関数を使用すると、Error: $http is not definedコンソールメッセージが表示されます。

HTMLページの上部に、他のすべてのJSインポートの後にAngularJSを含めています。

ウィジェットの依存関係などのために、他のJavaScriptライブラリも含めました。スクリプトのインポートセクションは次のようになります。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
<script src="http://www.trirand.com/blog/jqgrid/js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="http://www.trirand.com/blog/jqgrid/js/jquery.jqGrid.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js"></script>

サーバーにデータを送信するために使用しているコントローラーがあります。

function FormCtrl($scope) {
  $scope.sendData = function(){
        var data = "firstName=" + $scope.firstName + "&" +
            "lastName=" + $scope.lastName + "&" +
            "address=" + $scope.address + "&" +
            "postcode=" + $scope.postcode;

        $http.post("/data/person/put", data);
     };
}

機能はsendDataボタンに付いています。呼び出しが$http.post(...)その時点でコンソールがエラーを出力するまで、すべてが正常に機能します。

完全なエラーリストは次のとおりです。

Error: $http is not defined
$scope.sendData@http://localhost:8080/angularjs/:96
Mc/x/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js:71
ec[c]</</</<@https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js:142
e.prototype.$eval@https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js:87
e.prototype.$apply@https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js:87
ec[c]</</<@https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js:142
c.event.handle@http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js:63
c.event.add/o@http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js:57

https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js
Line 61

$http.post関数を使用するようにAngularJSを構成するには、他に何かする必要がありますか?

http://docs.angularjs.org/api/ng.$httpのドキュメントの「AngularJSショートカットメソッド」セクションから直接使用法を解除しました。

誰か助けてもらえますか?

ありがとうアダム

4

1 に答える 1

23

function FormCtrl($scope) {である必要がありますfunction FormCtrl($scope, $http) {

コントローラに必要なすべてのサービスを注入する必要があります。この場合は、サービスを使用して$scopeいますが、エラーの原因はそれ$httpだけです。$scope

元:

function FormCtrl($scope, $http) {
    ....
}
FormCtrl.$inject = ['$scope', '$http'];

ここで縮小化を伴う注射の合併症についてのメモを読むことができます、読んでくださいA Note on Minification

于 2013-02-27T12:34:44.130 に答える