AngularJs ReferenceError: $ http ไม่ได้ถูกกำหนดไว้


199

ฉันมีฟังก์ชั่นเชิงมุมต่อไปนี้:

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

แต่เมื่อใดก็ตามที่เรียกใช้ฟังก์ชั่นนี้ฉันจะได้รับReferenceError: $http is not definedในคอนโซลของฉัน ใครช่วยฉันเข้าใจสิ่งที่ฉันทำผิดที่นี่?

คำตอบ:


373

อาจเป็นไปได้ว่าคุณยังไม่ได้$httpให้บริการแก่คอนโทรลเลอร์ของคุณ มีหลายวิธีในการทำเช่นนั้น

โปรดอ่านเอกสารอ้างอิงนี้เกี่ยวกับ DI จากนั้นมันง่ายมาก:

function MyController($scope, $http) {
   // ... your code
}

18
ขอบคุณ! ฉันสงสัยว่าเหตุใดเอกสารของแองกูลาร์ ( docs.angularjs.org/tutorial/step_05 ) จึงมีข้อผิดพลาดนี้
Anurag

81

ฉันประสบปัญหาเดียวกันเมื่อใช้งาน

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

ฉันได้เปลี่ยนรหัสข้างต้นเป็นด้านล่าง อย่าลืมใส่ $ http (2 ครั้ง) ตามที่ระบุด้านล่าง

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

และมันทำงานได้ดี


4

เพียงกรอกคำตอบของ Amit Gargมีหลายวิธีในการฉีดการพึ่งพาใน AngularJS


คุณยังสามารถใช้$injectเพื่อเพิ่มการพึ่งพา:

var MyController = function($scope, $http) {
  // ...
}
MyController.$inject = ['$scope', '$http'];
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.