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 ) में यह त्रुटि क्यों है।
अनुराग

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

अमित गर्ग जवाब को पूरा करने के लिए, AngularJS में निर्भरता को इंजेक्ट करने के कई तरीके हैं।


आप $injectएक निर्भरता जोड़ने के लिए भी उपयोग कर सकते हैं :

var MyController = function($scope, $http) {
  // ...
}
MyController.$inject = ['$scope', '$http'];
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.