我有一个获取一些 JSON 数据的 Angular 服务,在这个数据中我有一个字符串函数(在服务器端构建它并将它传递给 Angular ),比如:
{
"fn": "function( data ) { data.rendered = data.value; }"
}
是否可以解析它并将其用作带 Angular 表达式?即
settings.myCustomFunction = serviceData.fn;
我尝试用 eval
、$eval
、$parse
的不同组合来做到这一点,但我没有他们中的任何一个都好运。它们要么抛出关于“Unexpected *”的错误,要么不抛出错误,但似乎什么也没做。
最佳答案
您可以将字符串括在括号中以避免语法错误。
eval("(" + fnString + ")")
这使它成为语法上有效的 JavaScript 语句,它由您可以自由传递的单个函数表达式组成。
匿名函数本身,没有任何括号或 LHS 运算符(如常用的赋值运算符 =
)作用于它,不是语法上有效的 JavaScript 语句。这就是为什么你会在 JS 中看到 IIFE(立即调用的函数表达式)被包裹在括号中:
(function() {
// ...
})()
关于javascript - 将 JSON 字符串转换为 Angular 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33880825/