在AngularJS中将字符串转换为函数

时间:2014-07-18 04:46:13

标签: javascript angularjs angularjs-scope angularjs-service

我正在尝试将字符串转换为控制器中的AngularJS Service方法调用。例如,我想转换字符串" Contact.send(email)"调用现有的服务方法。我想用:

window["Contact"]["send"](email);

就像在这个帖子中一样 - How to execute a JavaScript function when I have its name as a string - 但是它说联系服务是未定义的,尽管被注入控制器。

2 个答案:

答案 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);