我正在处理表单构建器应用程序。我需要在设计级别将特定元素的事件存储到数据库中,并在表单处于已发布状态时检索事件。
我将事件存储如下,这是一个控件的多个事件的示例:
在数据库中为一个元素保存事件的结构:
{
Event:
{
EventType: "click",
EventHandler: "var i = 0; alert(i);"
},
Event:
{
EventType: "change",
EventHandler: "var i = 0; alert(i);"
}
}
示例HTML代码:
我在表单构建器中给出textbox
控件的示例。
<input type="text" id="text1" />
在发布构建的表单时,我需要为只包含一个文本框的构建表单绑定上述事件。
当前方法:
我做的是,我使用 eval()
来执行代码,我的代码如下:
function BindEventsForControl(controlId,eventType,eventHandlerValue){
//Contruct the event string
var scriptString = "$(document).on('"+ eventType +"',"'+ controlId +"',function(){"+ eventHandlerValue +"});"
//Evaluate the above expression
eval(scriptString);
}
上述方法效果很好。
我的担忧:
我需要为表单中的每个控件调用BindEventsForControl()
,并且需要多次使用 eval()
。这可行吗?
我的问题:
我的方法可行吗?那里有更好的方法吗?同样,我提到我想执行存储为字符串的事件。
如果你知道任何其他新方法,那么请帮助我。
另外,我在我的应用程序中使用 Knockout.js 。对于这种情况,有没有办法与 knockout.js 接触?