2012-12-07 35 views
191

tôi có chức năng kiễu góc sau:

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

Nhưng bất cứ khi nào chức năng này được gọi, tôi nhận được ReferenceError: $http is not defined trong giao diện điều khiển của tôi. Ai đó có thể giúp tôi hiểu những gì tôi đang làm sai ở đây không?

Trả lời

360

Có thể bạn chưa tiêm dịch vụ $http vào bộ điều khiển của mình. Có một số cách để làm điều đó.

Vui lòng đọc this reference about DI. Sau đó, nó được rất đơn giản:

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

Cảm ơn! Tôi tự hỏi tại sao tài liệu của Angular (http://docs.angularjs.org/tutorial/step_05) có lỗi này. – Anurag

79

Tôi đã trải qua cùng một vấn đề khi tôi đã sử dụng

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

Tôi đã thay đổi mã ở trên để đưa ra dưới đây. Hãy nhớ bao gồm $ http (2 lần) như được đưa ra dưới đây.

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

và đã hoạt động tốt.

0

Chỉ cần hoàn thành Amit Garg answer, có một số cách để tiêm phụ thuộc vào AngularJS.


Bạn cũng có thể sử dụng $inject để thêm một sự phụ thuộc:

var MyController = function($scope, $http) { 
    // ... 
} 
MyController.$inject = ['$scope', '$http']; 
Các vấn đề liên quan