我正在尝试将字符串转换为控制器中的AngularJS Service方法调用。例如,我想转换字符串" Contact.send(email)"调用现有的服务方法。我想用:
window["Contact"]["send"](email);
就像在这个帖子中一样 - How to execute a JavaScript function when I have its name as a string - 但是它说联系服务是未定义的,尽管被注入控制器。
答案 0 :(得分:6)
您可以使用$ scope。$ eval方法来计算当前$ scope上下文中的表达式。
$scope.$eval("Contact.send(email)");
但您需要确保Contact对象在$ scope对象上可用,否则它将无效。请参阅此https://code.angularjs.org/1.2.15/docs/api/ng/type/ $ rootScope.Scope
的范围文档答案 1 :(得分:6)
您需要使用$ injector从字符串中获取服务:
$injector.get('Contact')['send'](email);