9

में अज्ञात $ http प्रदाता मुझे कॉन्फ़िगर विधि में $http सेवा का उपयोग करने की आवश्यकता है। लेकिन मैं कॉन्फ़िगरेशन में $http का उपयोग नहीं कर सकता, मुझे unknown Provider त्रुटि संदेश मिल रहा है।कोणीय

मेरे कोड:

.config(function($http, $routeProvider, $provide) { 
    $http.get("sampleslist.js").success(function(data) { 
     var loop = 0, currentRoute; 

     for (loop = 0; loop < data[loop].pages.length; loop++) { 
      currentRoute = data[loop].pages; 

      var routeName = "/" + currentRoute[loop].name; 
      $routeProvider.when(routeName, { 
       templateUrl:"/" + currentRoute.name + ".html", 
      }) 
     } 
    }) 

    app = {controller: $controllerProvider.register} 
}) 

आप इस के लिए समाधान प्रदान करते हैं कृपया कर सकते हैं?

+3

खैर उपयोग करते हैं, जैसा कि आप ने कहा, आप config चरण में $ http उपयोग नहीं कर सकते। आप इसे रन चरण में उपयोग कर सकते हैं, यद्यपि। की [app.config में सेवा सम्मिलित करें] –

+1

संभावित डुप्लिकेट (http://stackoverflow.com/questions/15937267/inject-service-in-app-config) – scokmen

उत्तर

3

सिर्फ AJAX अनुरोध आप वास्तव में नई इंजेक्टर से $ http सर्वर प्राप्त कर सकते हैं बनाने के लिए की जरूरत है:

.config(function($routeProvider, $provide) { 
    var $http = angular.injector(['ng']).get('$http'); 
    $http.get("sampleslist.js").success(

     function(data) { 

      var loop = 0, 
       currentRoute; 

      for (loop = 0; loop < data[loop].pages.length; loop++) { 

       currentRoute = data[loop].pages; 

       var routeName = "/" + currentRoute[loop].name; 

       $routeProvider.when(routeName, { 

        templateUrl: "/" + currentRoute.name + ".html", 

       }) 
      } 
     }) 

    app = { 
     controller: $controllerProvider.register, 
    } 
}) 
+0

$ routeProvider.when (routeName, { }) यह काम मार नहीं रहा, क्यों? –

+0

मैं यह भी सुझाव नहीं दूंगा कि ओपी ने (जानबूझकर) सीमा को रोक दिया है जो कोणीय ने रखा है; फिर भी, 'सफलता' एक बहिष्कृत विधि है और इसका उपयोग नहीं किया जाना चाहिए। इस तरह से '$ http' तक पहुंचने से खतरनाक लगता है ... –

3

आप .config फ़ाइल में केवल प्रदाताओं इंजेक्षन कर सकते हैं। लेकिन $ http प्रदाता नहीं है, आपका कोणीय ऐप $ http नामक प्रदाता की खोज कर रहा है लेकिन यह इसे खोजने में सक्षम नहीं है इसलिए यह त्रुटि फेंक दिया।

इसे कैसे हल करें ??

आप किसी भी ajax कॉल अपने कोणीय नियंत्रक लोड हो रहा है इससे पहले कि आप .run

+0

' .un' को * कोणीय पृष्ठ लोड होने के बाद * चलाने के लिए गारंटी दी जाती है, पहले नहीं .. –

+0

मेरे ज्ञान/पढ़ने के अनुसार यह कोणीय काम का प्रवाह है। ऊपर मैं कहने का मतलब था, आप अपने नियंत्रक लोडिंग से पहले कुछ चला सकते हैं। मुझे पृष्ठ लोडिंग के बजाय डेटा का उल्लेख करना चाहिए था। app.config() app.run() निर्देश के संकलन कार्य (अगर वे डोम में पाए जाते हैं) app.controller() निर्देश के लिंक कार्यों (फिर से, यदि पाया जाता है) –

+0

जवाब –

4

यह .config में $http उपयोग करने के लिए एक अच्छा अभ्यास नहीं है में कर सकते हैं चाहते हैं। कोई भी इसे .run में उपयोग कर सकता है या .service या .factory का उपयोग कर सेवा का उपयोग कर सकता है।

+0

संपादित यह बारे में नहीं है अभ्यास। हम .config में $ http इंजेक्ट नहीं कर सकते हैं। –

1

क्या आपके पास sampleslist.js पर नियंत्रण है? यदि हां, तो बस इसे टैग का उपयोग करके डाउनलोड करें और चरों को मान असाइन करें।

//sampleslist.js 
var samplelist = {...} 

//index.html 
<script src="samplelist.js"></script> 

तो फिर तुम angular.constant का उपयोग कर कोणीय को यह मान इंजेक्षन सकता है या सिर्फ चर samplelist

+0

आपके अपडेट के लिए धन्यवाद - यारीश –