yod*_*een 2 javascript angularjs angularjs-service angularjs-factory
我有一些逻辑我想包装到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]();
}
};
});
Run Code Online (Sandbox Code Playgroud)
在控制器中,用户可以运行这样的东西testFactory.funcRunner("foo");.
有没有办法在这些方面做点什么testFactory[functionName]();?有没有更好的方法来做到这一点?谢谢你的帮助.
更新: 由于注释中的代码是用户定义的,我无法知道,也无法控制注释中的代码是如何编写的.我不想强迫用户施加任何限制.因此,我可以期待很少.
试试这种方法:
angular.module('testApp').factory('testFactory', function () {
var service = this;
this.foo = function() {
someData.amount = 5;
}
return {
funcRunner: function (functionName) {
service[functionName]();
}
};
});
function Ctrl($scope, testFactory) {
$scope.click = function () {
testFactory.funcRunner("foo");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4434 次 |
| 最近记录: |