Javascript 动态调用serviceName.functionName
我调用一个函数Javascript 动态调用serviceName.functionName,javascript,angularjs,Javascript,Angularjs,我调用一个函数 getData('serviceName', 'functionName') 这个函数看起来像 function getData(service, functionName){ service.functionName(request, $root.thing).then() } 但我总是得到服务。函数不是函数,我如何正确调用它们 您可以确保将服务作为字符串使用,如下所示。请确保在使用$injector的任何位置都注入它。不确定函数名,因为函数不在同一文件中。如果使
getData('serviceName', 'functionName')
这个函数看起来像
function getData(service, functionName){
service.functionName(request, $root.thing).then()
}
但我总是得到服务。函数不是函数,我如何正确调用它们
您可以确保将服务作为字符串使用,如下所示。请确保在使用$injector的任何位置都注入它。不确定函数名,因为函数不在同一文件中。如果使用括号表示法,则可以实现所需的功能
function getData(service, functionName){
service[functionName](request, $root.thing).then()
}
您是否已从服务中返回
functionName
??是工厂
还是服务
?@Davide如果您是这样问的,我会传递正确的参数。另外,console.log(服务)和console.log(函数名)为我提供了正确的值。是的,这是一家工厂。什么是。那么?这是承诺吗?嗯,你确定从你的服务中返回该功能吗?当您调用getData
so时,您处于控制器中?如果你能提供一个plunker,我们可以帮助你做得更好。我已经编辑了服务和主控制器部分,我希望它能有所帮助。myService
是一个字符串。这不是真正的服务。它没有findData
方法。请提供完整的代码,而不是摘录,这样就可以注意到代码中应该修正的内容。eval()
永远不是答案,特别是因为该语言用括号支持:yourService[functionName](…)
是的,你是对的。我的缺点:(但我认为这是将服务用作字符串的正确方法。括号起了作用,但我必须保持服务名称不变。
function getData(service, functionName){
service[functionName](request, $root.thing).then()
}