AngularJs ReferenceError: $ http tidak ditentukan

199

Saya memiliki fungsi Angular berikut:

$scope.updateStatus = function(user) {    
    $http({
        url: user.update_path, 
        method: "POST",
        data: {user_id: user.id, draft: true}
    });
};

Tetapi setiap kali fungsi ini dipanggil, saya masuk ReferenceError: $http is not definedke konsol saya. Dapatkah seseorang membantu saya memahami apa yang saya lakukan salah di sini?

Bocah Chubby
sumber

Jawaban:

373

Mungkin Anda belum menyuntikkan $httplayanan ke controller Anda. Ada beberapa cara untuk melakukan itu.

Silakan baca referensi ini tentang DI . Maka menjadi sangat sederhana:

function MyController($scope, $http) {
   // ... your code
}
ŁukaszBachman
sumber
18
Terima kasih! Saya bertanya-tanya mengapa dokumentasi Angular sendiri ( docs.angularjs.org/tutorial/step_05 ) memiliki kesalahan ini.
Anurag
81

Saya telah mengalami masalah yang sama ketika saya menggunakan

    myApp.controller('mainController', ['$scope', function($scope,) {
        //$http was not working in this
    }]);

Saya telah mengubah kode di atas untuk diberikan di bawah ini. Ingatlah untuk memasukkan $ http (2 kali) seperti yang diberikan di bawah ini.

 myApp.controller('mainController', ['$scope','$http', function($scope,$http) {
      //$http is working in this
 }]);

dan telah bekerja dengan baik.

Amit Garg
sumber
4

Hanya untuk menyelesaikan jawaban Amit Garg , ada beberapa cara untuk menyuntikkan dependensi di AngularJS.


Anda juga dapat menggunakan $injectuntuk menambahkan ketergantungan:

var MyController = function($scope, $http) {
  // ...
}
MyController.$inject = ['$scope', '$http'];
Mistalis
sumber