如何获取指令,服务和控制器的名称和范围?

时间:2015-11-12 21:51:26

标签: javascript angularjs angularjs-directive angularjs-scope

我希望我们的大角度项目有些奇怪。我想通过devtool控制台的名称访问范围和服务。范围最简单的解决方案是选择DOM元素并调用

> angular.element($0).scope().books

在控制台中。但它并没有真正有用。所以,我想写这样的东西:

> booksPageController.books

并且不考虑页面元素。 另外,我想按名称访问指令并获取一个范围数组(每个指令使用范围),如下所示:

> bookCard
// -> [$scope, $scope, $scope]
> bookCard[0].title
// -> "Moby Dick"

其中bookCard是指令的名称。然后,我想按名称访问服务:

> booksService.getList()

从项目中获取自定义服务非常重要。但$http也很好吃。

现在我找到了控制器的解决方案:

(function(original) {
    angular.modules = [];
    angular.module = function() {
        if (arguments.length > 1) angular.modules.push(arguments[0]);
        return original.apply(null, arguments);
    };
})(angular.module);

angular.module('tmp').config(function ($provide) {
    $provide.decorator('$controller', function ($delegate) {
        return function(constructor, locals, later, indent) {
            if (typeof constructor == "string") window.controllers[constructor] = locals.$scope;
            return $delegate(constructor, locals, later, indent);
        }
    });
});

这个hack允许我获取带有范围的控制器列表。以及angular.modules中包含服务名称,指令等的模块列表。

任何人都可以通过angular.modules的名字来帮助我获取指令和服务的范围,或者装饰一些东西来获取它吗?..

0 个答案:

没有答案