2013-02-27 19 views
12

AngularJS'i ilk kez deniyorum. $http.post("url", data) işlevini kullanırken, bir Error: $http is not defined konsol iletisi alıyorum.

HTML sayfamın en başında, tüm JS ithalatlarından sonra AngularJS'yi ekliyorum.

Ben de widget'ı nedeniyle diğer JavaScript kütüphaneleri dahil ettik

bağımlılıkları vb My komut ithalatı bölüm şuna benzer:

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

ben sunucuya bazı veri göndermek için kullanıyorum bir denetleyici vardır:

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 işlevi bir düğmeye bağlanmıştır. Tümü, $http.post(...) numaralı çağrıya kadar konsolun çalışmasını bekler.

tam hata listesidir:

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 

Ben $http.post işlevini kullanmak angularjs yapılandırmak için başka bir şey yapmak zorunda mıyım? http://docs.angularjs.org/api/ng.$http

Herkes yardımcı olabilir:

Ben angularjs düz burada belgelerin Kısayol Yöntemleri bölüm kullanımını kaldırdı?

Teşekkür Adam

cevap

23

function FormCtrl($scope) {function FormCtrl($scope, $http) { olmalıdır. Sen $scope ve $http hizmeti kullanan bu durumda kontrolöre gerekli tüm hizmetleri, enjekte etmek gerekir, ancak enjekte etmiş

sadece $scope Hatanın nedeni olduğunu.

Ör: Sen küçültme here ile enjeksiyon komplikasyonlar hakkında bir not okuyabilir

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

, dışarı çalıştı ve tam şimdi çalışıyor A Note on Minification

+0

okuyun. Hızlı yanıtınız için teşekkür ederim. Bu kadar çabuk cevabını bile kabul edemem. Ama yapacağım. Tekrar teşekkürler! –

+1

http://docs.angularjs.org/tutorial/step_05 adresinde minification ile enjeksiyondaki komplikasyonlar hakkında bir not okuyabilirsiniz. –