Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取所有角度控制器_Javascript_Angularjs_Controller - Fatal编程技术网

Javascript 获取所有角度控制器

Javascript 获取所有角度控制器,javascript,angularjs,controller,Javascript,Angularjs,Controller,是否可以获得我定义的所有角度控制器的列表?基本上,我希望能够根据所使用的文件来确定需要导入哪些文件(我编写的)。我能想到的唯一方法是遍历HTML并找到与ng controller相关的所有值,但我想知道是否有更干净、更健壮的方法。尝试使用\u invokeQueue它可能就是您要找的: angular.module('MyApp')['_invokeQueue'].forEach(function(val‌​ue){ console.log(value[2][0]) }) _invokeQue

是否可以获得我定义的所有角度控制器的列表?基本上,我希望能够根据所使用的
文件来确定需要导入哪些
文件(我编写的)。我能想到的唯一方法是遍历HTML并找到与
ng controller
相关的所有值,但我想知道是否有更干净、更健壮的方法。

尝试使用
\u invokeQueue
它可能就是您要找的:

angular.module('MyApp')['_invokeQueue'].forEach(function(val‌​ue){ console.log(value[2][0]) })
_invokeQueue由添加到 模块使用熟悉的angular.module('myModule')。控制器, angular.module('myModule')。指令等调用。表中的每一项 队列是一个包含三个元素的数组。第一个是 将调用服务,第二个是提供程序上要调用的方法 使用,第三个元素是传递给 服务


您可以使用模块的
\u invokeQueue
属性执行此操作,如中所示

在任何现有控制器中,复制并粘贴以下代码将 列出所有控制器

注意:请使用“app”更改应用程序变量

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]);
            }
        });
    });

我很高兴你没有坚持你原来的想法,因为。。。如果你浏览HTML,如果人们使用ui路由器和
controllerAs
@BrandonIbbotson,你将找不到任何控制器,这更像是一个内部黑客解决方案,所有控制器都使用
ng controller
,所以不会有太大问题。我知道
ui路由器
,但它没有被用于此。有什么建议吗?
ngRoute
还允许将特定html的控制器定义到js配置文件中。@nubinub我知道。。。这就是我问这个问题的原因。正如我所说,这是一个内部解决方案,其中所有控制器都使用
ng controller
应用。就我而言,一个快速的
查询选择器可以完成这项工作,我想知道是否有一种“更稳健的方法”,也就是说,考虑到你提到的这些障碍。我想不出任何方法可以做到这一点。
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]);
            }
        });
    });