मैं AngularJS 1.x के साथ काम कर रहा हूं और मैं उसी मॉड्यूल में एक ही सेवा को कई बार परिभाषित कर सकता हूं। निम्नलिखित स्निपेट में, मैं सेवा मॉड्यूल myApp
में nameService
2 बार परिभाषित करने कर रहा हूँ: "दूसरा परिभाषा":उसी मॉड्यूल में कोणीय जेएस सेवा कई बार घोषित करें
(function() {
'use strict';
angular
.module('myApp', [])
.controller('MainController', MainController)
.factory('nameService', nameService1)
.factory('nameService', nameService2);
MainController.$inject = ['nameService'];
function MainController(nameService) {
var vm = this;
vm.message = nameService.getName();
}
function nameService1() {
return {
getName: getName
};
function getName() {
return 'First Definition';
}
}
function nameService2() {
return {
getName: getName
};
function getName() {
return 'Second Definition';
}
}
})();
रनटाइम पर, AngularJS मूल्य सेवा की दूसरी कार्यान्वयन द्वारा लौटाए का प्रयोग करेंगे। कृपया this Plunker example देखें।
तो, अनुभवजन्य रूप से, AngularJS हमेशा किसी सेवा की नवीनतम परिभाषा का उपयोग करता है, जो पिछले लोगों को अनदेखा करता है।
मेरा प्रश्न है: क्या इस व्यवहार का वर्णन करने वाला कोई आधिकारिक दस्तावेज है?
जावास्क्रिप्ट अनुक्रमिक रूप से संकलित करता है, इसलिए जब यह दूसरे नाम सेवा का सामना करता है, तो यह पिछले एक – aliasav
को ओवरराइड करता है, ठीक है, जावास्क्रिप्ट अनुक्रमिक रूप से संकलित कर सकता है लेकिन यह कोणीय ढांचा है जो तय करता है कि इसे पहले से परिभाषित सेवा की दूसरी परिभाषा कब मिलती है। उदाहरण के लिए, यह हमेशा पहला उदाहरण रखने और दूसरों को त्यागने का फैसला कर सकता है, लेकिन इसके विपरीत, ऐसा लगता है कि यह हमेशा अंतिम रहता है। मेरा प्रश्न है: क्या इस व्यवहार के बारे में कोई आधिकारिक दस्तावेज है? – Andrea