में मॉड्यूल के "रन" विधि में निर्भरता इंजेक्ट करें I समझने की कोशिश कर रहा हूं कि मैं Angularjs के साथ कैसे काम करूं। यह अच्छी ढांचे की तरह दिखता है, लेकिन मैं DI के साथ एक छोटी सी समस्या के साथ अटक गया ...Angularjs
मैं मॉड्यूल के "रन" विधि में निर्भरता कैसे इंजेक्ट कर सकता हूं? मेरा मतलब है कि मैं इसे करने में सक्षम हूं, लेकिन यह केवल तभी काम करता है जब मेरे पास "रन" पैरामीटर नाम के समान नाम के साथ सेवा/कारखाना/मूल्य हो। मैं एक साधारण आवेदन का निर्माण उदाहरण देकर स्पष्ट करना कि मैं क्या मतलब है:
var CONFIGURATION = "Configuration"; //I would like to have App.Configuration
var LOG_SERVICE = "LogService"; //I would like to have App.Services.LogService
var LOGIN_CONTROLLER = "LoginController";
var App = {};
App.Services = {};
App.Controllers = {};
App = angular.extend(App, angular.module("App", [])
.run(function ($rootScope, $location, Configuration, LogService) {
//How to force LogService to be the logger in params?
//not var = logger = LogService :)
LogService.log("app run");
}));
//App.$inject = [CONFIGURATION, LOG_SERVICE]; /* NOT WORKS */
App.Services.LogService = function (config) {
this.log = function (message) {
config.hasConsole ? console.log(message) : alert(message);
};
};
App.Services.LogService.$inject = [CONFIGURATION];
App.service(LOG_SERVICE, App.Services.LogService);
App.Controllers.LoginController = function (config, logger) {
logger.log("Controller constructed");
}
//The line below, required only because of problem described
App.Controllers.LoginController.$inject = [CONFIGURATION, LOG_SERVICE];
App.factory(CONFIGURATION, function() { return { hasConsole: console && console.log }; });
मैं की आवश्यकता क्यों है यह आप पूछ सकते हैं :) लेकिन मेरे मन में, पहले सभी बंद कोड व्यवस्थित करने के लिए सार्थक नामस्थान है। यह नाम टकराव को भी कम करेगा और आखिरकार, जेएस को कम करने पर, चीजें टूट जाती हैं, क्योंकि इसका नाम बदलकर नामों को छोटा कर दिया जाता है।
रन विधि पर एक छोटा सा टाइपो नहीं है, दूसरे ब्रैकेट आवश्यक नहीं है। –