从数据库中获取的调度事件处理程序作为字符串

时间:2016-10-22 16:23:19

标签: javascript jquery knockout.js formbuilder

我正在处理表单构建器应用程序。我需要在设计级别将特定元素的事件存储到数据库中,并在表单处于已发布状态时检索事件。

我将事件存储如下,这是一个控件的多个事件的示例:

在数据库中为一个元素保存事件的结构:

{
 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 接触?

0 个答案:

没有答案