2015-06-21 5 views
30

मैं AngularJS में config विधि में $window वस्तु इंजेक्षन करने की कोशिश कर रहा हूँ, लेकिन मैं एक त्रुटि प्राप्त हो रही में `config` पर आपत्ति window` करने के लिए ...

क्या है ऐसा करने का सही तरीका?

angular.module('myApp', ['$window']) //is this wrong? 

    .config(function ($window) { //this is not the way? 
     console.log($window); //console.log fails //error 
    }) 

    .controller("main", function($scope) { 
    $scope.index = 0; 
    $scope.num = number[$scope.index]; 

    $scope.increase = function() { 
    $scope.index += 1; 
    $scope.num = number[$scope.index]; 
    } 
}) 

Live Demo

+3

आप क्या करने की कोशिश कर रहे हैं? कई सेवाएं .config ब्लॉक में उपलब्ध नहीं होंगी। आपको शायद .run istead का उपयोग करने का प्रयास करना चाहिए। – cbass

+0

कॉन्फ़िगरेशन में $ विंडो का उपयोग करने के लिए अपने उपयोग मामले को आईडीक करें? क्या आप स्थान लाने की कोशिश कर रहे हैं? – kishanio

उत्तर

9

केवल स्थिरांक और प्रदाताओंconfig ब्लॉक में इंजेक्ट किया जा सकता:

यहाँ मेरी कोड है। $window एक सेवा है। & यह कॉन्फ़िगरेशन ब्लॉक के निष्पादन के दौरान उपलब्ध या कॉन्फ़िगर नहीं किया जा सकता है, इसलिए कोणीय इसे उपयोग करने से रोकता है।

आप रन ब्लॉक का उपयोग कर सकते हैं। यह आपके कोणीय ऐप के लिए मुख्य विधि के रूप में कार्य करता है। एप्लिकेशन को तुरंत चालू करने से ठीक पहले इसे निष्पादित किया जाता है। समय के साथ ब्लॉक को निष्पादित किया जाता है, सभी सेवा कॉन्फ़िगरिंग समाप्त हो जाएगी और इंजेक्शन के लिए तैयार हैं। तो अगर आप के रूप में नीचे $window,

angular.module('myApp', ['$window']) 

    .run(function ($window) { //use run rather than config 
     console.log($window); 
    }) 

    .controller("main", function($scope) { 
    $scope.index = 0; 
    $scope.num = number[$scope.index]; 

    $scope.increase = function() { 
    $scope.index += 1; 
    $scope.num = number[$scope.index]; 
    } 
    }) 
+1

यह काम नहीं करेगा: angular.module ('myApp', ['$ window']) क्योंकि "$ विंडो" एक मॉड्यूल नहीं है। –

71

का उपयोग आप config को $window सेवा इंजेक्षन नहीं कर सकते हैं के रूप में सेवाएं अभी तक config समय में आरंभ नहीं कर रहे हैं कर सकते हैं। हालांकि, आप उन्हें प्रदाताओं को इंजेक्ट कर सकते हैं और एक उदाहरण प्राप्त कर सकते हैं। आपके मामले में:

angular.module('myApp', []) 

.config(function ($windowProvider) { 
    var $window = $windowProvider.$get(); 
    console.log($window); 
}) 
+1

यह उत्तर स्वीकार किया जाना चाहिए। – Stalinko