我有一些逻辑想包装到 AngularJS 工厂中,这样我就可以使用 Angular 的依赖注入。由于逻辑是动态的,我不一定知道可以提前调用什么。我所拥有的是一个字符串,表示要调用的函数的名称。我知道我可以做一些事情,比如window["someFunctionName"]()
用字符串运行一个函数,但是由于所有东西都包含在一个工厂中,所以我不确定如何引用工厂来调用它。前任。 sampleFactory["someFuncitonName"]();
我发现运行该功能的唯一方法是使用eval("someFuncitonName()")
. 显然,如果可以的话,我想避免使用 eval 。
这是我正在尝试做的一个例子:
'use strict';
angular.module('testApp')
.factory('testFactory', function (someData) {
// User defined code that was wrapped up in a factory
function foo() {
someData.amount = 5;
}
// End dynamic code
return {
funcRunner: function(functionName) {
testFactory[functionName]();
}
};
});
在控制器中,用户将运行类似这样的东西testFactory.funcRunner("foo");
。
有没有办法按照这些思路做点什么testFactory[functionName]();
?有没有更好的方法来做到这一点?谢谢你的帮助。
更新: 由于注释中的代码是用户定义的,我无法知道,也无法控制注释中的代码是如何编写的。我不想对用户施加任何限制。因此,我可以期待的很少。