我希望我们的大角度项目有些奇怪。我想通过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
的名字来帮助我获取指令和服务的范围,或者装饰一些东西来获取它吗?..