javascript कोणीय जेएस का उपयोग कर अन्य मॉड्यूल कॉन्फिगर करने के लिए निरंतर इंजेक्ट करें




angularjs dependency-injection (2)

मैं अपने संपूर्ण एप्लिकेशन में कुछ चर जैसे आधार पथ साझा करना चाहूंगा। मॉड्यूल कॉन्फ़िगरेशन के दौरान इन चर को सुलभ होना चाहिए। मेरी राय थी, कि मैं इसके लिए एक निरंतर या प्रदाता का उपयोग कर सकता हूं।

मुझे कई मॉड्यूल मिले हैं और हर एक का अपना राउटिंग कॉन्फ़िगरेशन है। इन रूटिंग कॉन्फ़िगरेशन में, मैं उदाहरण के लिए कुछ सेटिंग्स एक्सेस करना चाहता हूं।

यह ऐप-मॉड्यूल-कॉन्फ़िगरेशन के लिए काम कर रहा है, लेकिन अन्य मॉड्यूल-कॉन्फ़िगरेशन (अन्य मॉड्यूल पर नियंत्रक के लिए ऐसा नहीं करता है) के लिए, मुझे हमेशा "अज्ञात प्रदाता: myApp.orders से जानकारी" मिलती है।

var myApp = angular.module('myApp', ['myApp.orders']);

myApp.constant('info', {
  version : '1.0'
});

myApp.config(function(info) {
  console.log('app config: ' + info.version);
});

myApp.controller('MyController', function (info) {
  console.log('controller: ' + info.version);
});

var orders = angular.module('myApp.orders', []);

// Remove comments to see it fail.

//orders.config(function(info) {
//  console.log('orders config: ' + info.version);
//});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

  <div ng-app="myApp" class="container" ng-controller="MyController">        
  </div>

मुझे लगता है कि मैं अभी थोड़ा विस्तार से चूक गया हूं, क्या आपके पास एक विचार है?


आपकी info निरंतर आपके myApp मॉड्यूल में परिभाषित myApp है। यदि मैं आपके प्रश्न को सही ढंग से समझता हूं, तो आप अन्य मॉड्यूल (जैसे myApp.orders मॉड्यूल) में स्थिरांक का उपयोग करना चाहेंगे। यदि ऐसा है, तो आपको myApp.orders में myApp इंजेक्ट करने की आवश्यकता है, लेकिन ऐसा लगता है कि आप रिवर्स करना चाहते हैं। एक समाधान स्थिरांक मॉड्यूल में स्थिरांक को विघटित करना है, और जहां आवश्यकता हो, निर्भरता के रूप में इसे इंजेक्ट करें।

angular.module('constants', []) 
  .constant(...);

angular.module('myApp', ['constants', 'myApp.orders'])
  ...

angular.module('myApp.orders', ['constants'])
  ...

मुझे नहीं पता कि मेरा समाधान सबसे सुंदर है, लेकिन मैंने अपने index.html में एक CONFIG की परिभाषा दी है जिसे मैं अन्य घटकों से संदर्भित करता हूं। मैं सर्वर साइड कोड के साथ अपना index.html उत्पन्न करता हूं ताकि प्रोग्राम शुरू होने पर मैं मान सेट कर सकूं। यही है, मैं index.cshtml का उपयोग करता हूं, लेकिन यह आसानी से index.php या अन्य तकनीक है। यहाँ मेरा index.html कैसा दिखता है:

....

 <script type="text/javascript">
    var usingMockDataGlobal = true;
 </script>

....


<script type="text/javascript">

        (function () {
            'use strict';

            var configData = {


                codeCampType: 'angu',

                loggedInUsername: 'peter',
                mockData: usingMockDataGlobal
            };
            angular.module('baseApp').constant('CONFIG', configData);


        })();
    </script>




provider