从角度缓存中提取所有常量

时间:2015-10-16 14:47:18

标签: angularjs caching constants

我知道我可以使用$injector.has('<constant name>')来获取名称的常量,但问题是我不提前知道名称,我只想获得所有角度常量的列表(例如)以“json_”开头。我需要这个的原因是因为我正在构建一个人们可以插入自己的代码的模块,这就是为什么我不会提前知道名字,但我至少可以要求程序员启动我需要的常量使用“json_”工作。目前我必须告诉他们将它们的常量命名为“json1”,“json2”,“json3”等,这很糟糕,因为用户必须跟踪它们在编号方面的位置并且这不是好设计。在API中似乎没有任何东西可以做我正在尝试做的事情。

1 个答案:

答案 0 :(得分:1)

没有内置的方法来获取角度模块中的所有常量,但是您可以通过_invokeQueue循环来实现这一点,json_obj内部使用数组来保存给定角度模块上的所有注册服务。如果您在angular.module('app')中注册了一个名为angular.module('app')._invokeQueue的常量,则['$provider', 'constant', ['json_obj', valueObj]]中的常量应包含如下数组:

json_*

因此,您可以通过以下方式获取function getJsonConstants(){ var queue = angular.module('myApp')._invokeQueue; var jsonConstant = []; angular.forEach(queue, function(item){ if(item[1] === 'constant'){ if(item[2][0].match(/\bjson_/gi)){ jsonConstant.push({ key: item[2][0], value: item[2][1] }) } } }) return jsonConstant; } 常量列表:

angular.module('myApp')

还有一件事,这个函数只能返回myApp中注册的所有常量,如果Public Function TRIMLR(Target As Range) As Variant TRIMLR = RTrim(LTrim(Target.Value)) End Function 有任何依赖模块,你应该在这些模块中循环所有_invokeQueue以获得完整的常量列表。