2016-08-23 11 views
9

क्या मेरे द्वारा परिभाषित सभी कोणीय नियंत्रकों की एक सूची प्राप्त करना संभव है? अनिवार्य रूप से मैं यह निर्धारित करने में सक्षम होना चाहता हूं कि कौन से files मुझे आयात करने की आवश्यकता है (जिन्हें मैंने लिखा है) किस पर उपयोग किया जाता है। एकमात्र तरीका मैं सोच सकता हूं कि HTML के माध्यम से जाकर ng-controller से जुड़े सभी मानों को ढूंढना है, लेकिन मैं सोच रहा था कि क्लीनर, अधिक मजबूत तरीका था या नहीं। _invokeQueue उपयोग करने के लिएसभी कोणीय नियंत्रकों को प्राप्त करें

+0

मुझे खुशी है कि आप अपने मूल विचार के साथ जाना नहीं था क्योंकि ... आप HTML के माध्यम से चल तो अगर लोगों को इस्तेमाल कर रहे थे कि आप किसी भी नियंत्रक नहीं मिलेगा ** ui रूटर ** और 'controllerAs हूँ '। – byxor

+0

@ ब्रैंडन इब्बॉटसन यह एक घर में हैकी समाधान का अधिक है, और सभी नियंत्रक 'एनजी-नियंत्रक' का उपयोग करते हैं, इसलिए यह बहुत अधिक समस्या नहीं होगी। मुझे 'यूई-राउटर' के बारे में पता है लेकिन इसका उपयोग इस के लिए नहीं किया जा रहा है। कोई सुझाव? –

+0

'ngRoute' जेएस कॉन्फ़िगरेशन फ़ाइलों में एक विशिष्ट एचटीएमएल के लिए नियंत्रक को परिभाषित करने की अनुमति भी दे रहा है। – nubinub

उत्तर

1

कोशिश यह हो सकता है आप जो खोज रहे हैं:

angular.module('MyApp')['_invokeQueue'].forEach(function(val‌​ue){ console.log(value[2][0]) }) 

_invokeQueue प्रत्येक सेवा है कि परिचित angular.module का उपयोग कर मॉड्यूल में जोड़ा जाता है के साथ से भर जाता है ('myModule ')। नियंत्रक, angular.module (' myModule ')। निर्देशक et al। कहता है। कतार में प्रत्येक आइटम तीन तत्वों वाला एक सरणी है। पहला प्रदाता है कि सेवा का आह्वान करेगा, दूसरा प्रदाता पर उपयोग करने का तरीका है और तीसरा तत्व सेवा पर पास किए गए किसी भी तर्क का सरणी है।

Reference

1

रूप this example

var appModule = angular.module('plunker',[]); 

angular.module('plunker').controller('TestCtrl', function(){}); 
angular.module('plunker').controller('TestCtrl2', function(){}); 
angular.module('plunker').controller('MainCtrl', function($scope) { 
    $scope.controllers = appModule._invokeQueue.filter(function(el){ 
     return el[0] === "$controllerProvider"; 
    }).map(function(el){ 
     return el[2]["0"]; 
    }); 
}); 
1

अपने मौजूदा नियंत्रक के किसी भी में में दिखाया गया है आप मॉड्यूल के _invokeQueue संपत्ति का उपयोग करके ऐसा कर सकते हैं, कॉपी और नीचे दिए गए कोड पेस्ट होगा आपको अपने सभी नियंत्रकों की सूची देता है।

नोट: कृपया अपना ऐप वैरिएबल 'ऐप' के साथ बदलें।

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

angular.element(document).ready(function(){ 
     var values = app._invokeQueue; 
     angular.forEach(values, function(value, key) { 
      if(value[0] == '$controllerProvider'){ 
       console.log(value[2][0]); 
      } 
     }); 
    }); 
संबंधित मुद्दे