javascript - 将 JSON 字符串转换为 Angular 函数?

标签 javascript angularjs

我有一个获取一些 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/

相关文章:

javascript - 为什么这个 JavaScript 不起作用?

javascript - toLocaleString api 不适用于 hi-IN 语言环境

node.js - 如何定义 GruntJS 服务的内容?

javascript - $location.Path 不在 iphone 上运行

java - Spring MVC 和 Apache Tiles 移植到 AngularJS/Backbone

javascript - 如何在 Canvas 中旋转图像

javascript - 我可以设置在 Chrome 中显示的 PDF 对象的文件名吗?

javascript - 检测对象的属性值为空

javascript - Vue Js 中数据/模型更新延迟

javascript - 如何使用 angularjs 创建点击按钮时的动态输入字段?