我有一个用户控件,它允许用户提供他们自己的脚本名称,这些名称由控件在特定事件上调用。
我有以下代码:
initialize : function()
{
// Call the base initialize method
Point74.WebAutoComplete.callBaseMethod(this, 'initialize');
$(document).ready(
Function.createDelegate(this, this._onDocumentReady)
);
},
_onDocumentReady : function()
{
var me = this;
$("#" + me.get_id()).autocomplete(me.get_ashxAddress(),
{
formatItem: function(item)
{
return eval(me.get_formatFunction() + "(" + item + ");");
}
}
).result(me.get_selectFunction());
}
me.get_formatFunction 包含函数的名称,即“FormatItem”。这个例子目前正在使用 eval,我不想使用它......加上这个例子无论如何都不起作用,但我想我会展示我想要得到的东西。
在上面的示例中,我得到一个值未定义的错误,因为 'item' 是一个字符串数组,而 eval 尝试将其转换为一个长字符串。
我怎样才能实现这个功能仍然通过'item'作为字符串数组传递给命名函数?
如果传递命名函数是一个坏主意,有没有其他选择?
这就是我的控件的声明方式:
<p74:WebAutoComplete runat="server" ID="ato_Test" AshxAddress="WebServices/SearchService.ashx"
FormatFunction="formatItem" SelectFunction="searchSelectedMaster" />