gpt4 book ai didi

javascript - 你如何使用angularjs中的字符串从工厂内部调用函数

转载 作者:行者123 更新时间:2023-11-29 18:18:54 25 4
gpt4 key购买 nike

我有一些逻辑想封装到 AngularJS 工厂中,这样我就可以使用 Angular 的依赖注入(inject)。由于逻辑是动态的,我不一定知道可以提前调用什么。我所拥有的是一个字符串,表示要调用的函数的名称。我知道我可以做一些像 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]();
}
};

});

在 Controller 中,用户将运行类似这样的东西 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");
}
}

关于javascript - 你如何使用angularjs中的字符串从工厂内部调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20692214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com