【问题标题】:Get all Angular controllers [duplicate]获取所有 Angular 控制器 [重复]
【发布时间】:2016-08-23 14:12:06
【问题描述】:

是否可以获得我定义的所有 Angular 控制器的列表?本质上,我希望能够确定需要导入哪些files(我写的),具体取决于使用哪些。我能想到的唯一方法是遍历 HTML 并找到与 ng-controller 关联的所有值,但我想知道是否有更清洁、更健壮的方法。

【问题讨论】:

  • 我很高兴您没有采用您最初的想法,因为...如果您遍历 HTML,如果人们使用 ui-routercontrollerAs.
  • @BrandonIbbotson 这更像是一个内部的 hacky 解决方案,所有控制器都使用ng-controller,所以它不会有太大问题。我知道ui-router,但它没有用于此目的。有什么建议吗?
  • ngRoute 还允许在 js 配置文件中定义特定 html 的控制器。
  • @nubinub 我知道......这就是我问这个问题的原因。就像我说的,这是一个内部解决方案,所有控制器都使用ng-controller 应用。就我而言,一个快速的querySelector 就可以完成这项工作,我想知道是否有“更强大的方法”,这意味着考虑到你提到的这些障碍。
  • 我想不出任何办法。

标签: javascript angularjs controller


【解决方案1】:

尝试使用_invokeQueue 这可能是您要查找的内容:

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

_invokeQueue 填充了添加到 使用熟悉的 angular.module('myModule').controller 的模块, angular.module('myModule').directive 等。来电。中的每一项 queue 是一个包含三个元素的数组。第一个是提供者 将调用服务,第二个是提供者上的方法 使用,第三个元素是传递给 服务。

Reference

【讨论】:

    【解决方案2】:

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

    注意:请使用“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]);
                }
            });
        });
    

    【讨论】:

      【解决方案3】:

      您可以通过使用模块的_invokeQueue 属性来做到这一点,如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"];
          });
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-09
        • 1970-01-01
        • 2016-08-23
        相关资源
        最近更新 更多