将事件处理程序名称作为子项插入到 json2html 模板中

Insert event handler's name to json2html's template as childern

我正在使用 json2Html

  var template = {
            "tag": "tr",
            "children": [
              {
                "tag": "td",
                // "html": "<input type='radio' name='TenantID' value='${TenantID}' onclick='onTenantClick(event)'/>" // This works                
                "children": [
                {                          
                "tag": "input",
                "type": "radio",
                "name": "TenantID",
                "value": "${TenantID}",
                "onclick": "onTenantClick(event)"
                }
                ]                
              },
          ]
}; 

"html" 部分有效。如果我将 radio 元素添加为子元素,我会为 onclick 事件处理程序获得 TypeError: e.data.action.call is not a function

文档的示例 (https://json2html.com/examples/) 显示如下:

"onclick":function(){
                        $(this).css("visibility","hidden");

但是我想插入另一个 .js 文件中的函数名。

json2html.com 文档中所述,任何 on 事件都必须是一个函数。所以如果你想调用另一个函数,你需要像这样包装

var template = {
            "<>": "tr",
            "html": [
              {
                "<>": "td",               
                "html": [
                {                          
                "tag": "input",
                "type": "radio",
                "name": "TenantID",
                "value": "${TenantID}",
                "onclick": function(e) { onTenantClick(e.event); }
                }
                ]                
              },
          ]
}; 

请注意,“tag”已弃用并替换为“<>”,“children”已弃用并替换为“html”