在 Alpajajs 中从后端发送一个函数和方案

Send a function along with the scheme from backend in Alpacajs

我在后端有一个 API return AlpacaJS 表单的完整 json(模式和选项)。响应的内容类型是 application/json。以下是一个示例响应,

{
  "options": {
    "fields": {
      "students": {
        "items": {
          "type": "tablerow"
        },
        "type": "table"
      }
    },
    "form": {
      "buttons": {
        "submit": {
          "click": "function(){alert(\"sample\");}"
        }
      }
    }
  },
  "schema": {
    "properties": {
      "students": {
        "items": {
          "properties": {
            "name": {
              "required": true,
              "title": "Name",
              "type": "string"
            },
            "contact-number": {
              "title": "Age",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      }
    },
    "type": "object"
  }
}

当我点击 Submit 按钮时,浏览器控制台出现以下错误,

Uncaught TypeError: t.call is not a function

我认为问题在于该函数在响应的以下部分中被视为字符串。

"form": {
  "buttons": {
    "submit": {
      "click": "function(){alert(\"sample\");}"
    }
  }
}

AlpacaJS 有没有办法从后端发送一个 javascript 函数,或者有没有办法在前端将函数字符串转换为 javascript 函数?

为了得到它,你应该通过 new Function('return ' + val)();stringified 函数转换为一个函数(注意这是 eval 和 [=11= 的一种形式) ]).

这是一个有效的 fiddle。 如果它不适合你,请告诉我。