2013-02-27 16 views
12

Sto provando AngularJS per la prima volta. Quando si utilizza la funzione $http.post("url", data), ricevo un messaggio della console Error: $http is not defined.

Nella parte superiore della mia pagina HTML sto includendo AngularJS dopo tutte le altre importazioni JS.

Ho incluso anche altri librerie JavaScript causa di widget di dipendenze, ecc sezione My importazioni di script simile al seguente:

<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> 

Ho un regolatore che sto usando per inviare alcuni dati al server:

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); 
    }; 
} 

La funzione sendData è associata a un pulsante. Tutto funziona bene fino alla chiamata a $http.post(...) a questo punto la console emette l'errore.

La lista completa di errore è:

Error: $http is not defined 
[email protected]://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 
[email protected]://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js:87 
[email protected]://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 
[email protected]://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js:63 
c.event.add/[email protected]://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 

Devo fare qualcosa di diverso per configurare AngularJS utilizzare la funzione $http.post?

ho sollevato l'utilizzo direttamente dalle AngularJS metodi rapidi sezione della documentazione qui: http://docs.angularjs.org/api/ng.$http

chiunque può aiutare?

Grazie Adam

risposta

23

function FormCtrl($scope) { dovrebbe essere function FormCtrl($scope, $http) {.

è necessario iniettare tutti i servizi necessari al controllore, in questo caso si sta utilizzando $scope e $http servizio, ma è stata iniettata solo $scope che è la causa dell'errore.

Es:

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

Si può leggere una nota su complicazioni a iniezione con minification here, leggere A Note on Minification

+0

Provato fuori e completamente funzionante ora. Grazie per la rapida risposta. Così veloce che non riesco nemmeno ad accettare la tua risposta. Ma lo farò. Grazie ancora! –

+1

È possibile leggere una nota relativa alle complicanze dell'iniezione con minification su http://docs.angularjs.org/tutorial/step_05 –

Problemi correlati