दिलचस्प पोस्ट
घुंघराले ब्रेसिज़ में सी कोड के ब्लॉक क्यों संलग्न हैं? एसक्यूएल सर्वर मौजूदा सारणी के लिए ऑटो इंप्रेशन प्राथमिक कुंजी जोड़ता है MySQL को लिखते समय टेक्स्टएरिया से लाइन ब्रेक को सुरक्षित रखें 2 क्षेत्रों की तुलना करने के लिए MongoDb क्वेरी स्थिति लालची बनाम अनिच्छुक बनाम पारस्परिक क्वांटीफायर अजगर 3.5: प्रकार त्रुटि: किसी बाइट-जैसे ऑब्जेक्ट की आवश्यकता होती है, फ़ाइल को लिखते समय 'str' नहीं गिट उथले submodules कैसे एक ऑब्जेक्ट nullable है की जांच करने के लिए? जावा में एन दशमलव स्थानों पर संख्या को कैसे गोल करना है I एक जावास्क्रिप्ट चर एक डॉलर के संकेत के साथ शुरू क्यों होगा? कैसे मैं स्थानीय समय को यूटीसी में पायथन में बदल सकता हूं? सामान्य प्रकार का उदाहरण बनाएं? रीसाइक्लर देखें onClick एंड्रॉइड – लॉन्चर आइकन आकार एक HTML पृष्ठ पर स्क्रॉलबार छिपा रहा है

कैसे अलग AngularJS नियंत्रक फ़ाइलें बनाने के लिए?

मेरे सभी AngularJS नियंत्रक एक फ़ाइल में हैं, नियंत्रक.जेएस इस फाइल को संरचित किया गया है:

angular.module('myApp.controllers', []) .controller('Ctrl1', ['$scope', '$http', function($scope, $http) { }]) .controller('Ctrl2', ['$scope', '$http', function($scope, $http) } }]) 

मैं क्या करना चाहता हूं, अलग-अलग फ़ाइलों में Ctrl1 और Ctrl2 डाल दिया जाता है मैं तब मेरी index.html में दोनों फाइलों को शामिल करूँगा, लेकिन यह कैसे संरचित किया जाना चाहिए? मैंने इस तरह से कुछ करने की कोशिश की और यह वेब ब्राउज़र कंसोल में एक त्रुटि फेंकता कह रहा है कि यह मेरे नियंत्रक नहीं मिल सकता है कोई संकेत?

मैंने स्टैक ओवरफ्लो की खोज की और यह इसी तरह का प्रश्न मिला – हालांकि, यह वाक्यविन्यास कोणीय की चोटी पर एक अलग फ्रेमवर्क (कॉफी स्क्रिप्ट) का उपयोग कर रहा है, और इसलिए मैं अनुसरण नहीं कर पा रहा हूं।


AngularJS: मैं एकाधिक फ़ाइलों में नियंत्रक कैसे बनाऊँ?

वेब के समाधान से एकत्रित समाधान "कैसे अलग AngularJS नियंत्रक फ़ाइलें बनाने के लिए?"

एक फ़ाइल:

 angular.module('myApp.controllers', []); 

फ़ाइल दो:

 angular.module('myApp.controllers').controller('Ctrl1', ['$scope', '$http', function($scope, $http){ }]); 

फ़ाइल तीन:

 angular.module('myApp.controllers').controller('Ctrl2', ['$scope', '$http', function($scope, $http){ }]); 

उस क्रम में शामिल करें मैं 3 फाइलों की सिफारिश करता हूं ताकि मॉड्यूल घोषणा स्वयं की हो।


फ़ोल्डर संरचना के लिए इस विषय पर बहुत से कई राय हैं, लेकिन ये दोनों बहुत अच्छे हैं

https://github.com/angular/angular-seed

http://briantford.com/blog/huuuuuge-angular-apps.html

अंत में एक सरणी के साथ angular.module API का उपयोग करना एक नया मॉड्यूल बनाने के लिए कोणीय बताएगा:

myApp.js

 // It is like saying "create a new module" angular.module('myApp.controllers', []); // Notice the empty array at the end here 

सरणी के बिना इसका उपयोग करना वास्तव में एक ग्रहक समारोह है तो अपने नियंत्रकों को अलग करने के लिए, आप यह कर सकते हैं:

Ctrl1.js

 // It is just like saying "get this module and create a controller" angular.module('myApp.controllers').controller('Ctrlr1', ['$scope', '$http', function($scope, $http) {}]); 

Ctrl2.js

 angular.module('myApp.controllers').controller('Ctrlr2', ['$scope', '$http', function($scope, $http) {}]); 

अपने जावास्क्रिप्ट आयात के दौरान, सुनिश्चित करें कि myApp.js AngularJS के बाद है, लेकिन किसी भी नियंत्रक / सेवाओं / आदि से पहले … अन्यथा कोणीय आपके नियंत्रकों को प्रारंभ करने में सक्षम नहीं होगा।

यद्यपि दोनों उत्तर तकनीकी रूप से सही हैं, मैं इस उत्तर के लिए एक अलग सिंटैक्स पसंद पेश करना चाहता हूं। यह इम्हो यह पढ़ना आसान बनाता है कि इंजेक्शन के साथ क्या हो रहा है, आदि के बीच अंतर है।

फ़ाइल एक

 // Create the module that deals with controllers angular.module('myApp.controllers', []); 

फ़ाइल दो

 // Here we get the module we created in file one angular.module('myApp.controllers') // We are adding a function called Ctrl1 // to the module we got in the line above .controller('Ctrl1', Ctrl1); // Inject my dependencies Ctrl1.$inject = ['$scope', '$http']; // Now create our controller function with all necessary logic function Ctrl1($scope, $http) { // Logic here } 

फ़ाइल तीन

 // Here we get the module we created in file one angular.module('myApp.controllers') // We are adding a function called Ctrl2 // to the module we got in the line above .controller('Ctrl2', Ctrl2); // Inject my dependencies Ctrl2.$inject = ['$scope', '$http']; // Now create our controller function with all necessary logic function Ctrl2($scope, $http) { // Logic here } 

इस समाधान के बारे में क्या? फ़ाइलें (पृष्ठ के अंत में) में मॉड्यूल और नियंत्रक यह कई नियंत्रकों, निर्देशों और अन्य कार्यों के साथ काम करता है:

app.js

 var app = angular.module("myApp", ['deps']); 

myCtrl.js

 app.controller("myCtrl", function($scope) { ..}); 

एचटीएमएल

 <script src="app.js"></script> <script src="myCtrl.js"></script> <div ng-app="myApp" ng-controller="myCtrl"> 

Google को कोणीय ऐप संरचना के लिए एक सर्वश्रेष्ठ अभ्यास अनुशंसाएं भी हैं I वास्तव में संदर्भ के आधार पर समूह करना चाहते हैं I एक फ़ोल्डर में सभी HTML नहीं, बल्कि उदाहरण के लिए लॉगिन के लिए सभी फ़ाइलें (html, css, app.js, controller.js और इसी तरह)। इसलिए अगर मैं एक मॉड्यूल पर काम करता हूं, तो सभी निर्देश आसान मिलते हैं।

संक्षेप के लिए, यहां एक ES2015 नमूना है जो वैश्विक चर पर भरोसा नहीं करता है

 // controllers/example-controller.js export const ExampleControllerName = "ExampleController" export const ExampleController = ($scope) => { // something... } // controllers/another-controller.js export const AnotherControllerName = "AnotherController" export const AnotherController = ($scope) => { // functionality... } // app.js import angular from "angular"; import { ExampleControllerName, ExampleController } = "./controllers/example-controller"; import { AnotherControllerName, AnotherController } = "./controllers/another-controller"; angular.module("myApp", [/* deps */]) .controller(ExampleControllerName, ExampleController) .controller(AnotherControllerName, AnotherController) 

इतना सुंदर नहीं है, लेकिन कार्यान्वयन समाधान में बहुत सरल – वैश्विक चर का उपयोग कर।

"पहले" फ़ाइल में:

 window.myApp = angular.module("myApp", []) .... 

"दूसरा", "तीसरा", आदि में:

 myApp.controller('MyController', function($scope) { .... });