У меня есть пользовательский элемент управления, который позволяет пользователям указывать собственные имена сценариев, которые вызываются элементом управления для определенных событий.
У меня есть следующий код:
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, который я не хочу использовать ... плюс этот пример все равно не работает, но я подумал, что покажу, что я пытаюсь получить.
В приведенном выше примере я получаю значение undefined error, поскольку 'item' - это строковый массив, и eval пытается преобразовать его в одну длинную строку.
Как я могу достичь этой функциональности, если она все еще проходит через 'item' в виде массива строк с именованной функцией?
Если передача именованных функций - плохая идея, есть ли альтернативы?
Вот как объявлен мой контроль:
<p74:WebAutoComplete runat="server" ID="ato_Test" AshxAddress="WebServices/SearchService.ashx"
FormatFunction="formatItem" SelectFunction="searchSelectedMaster" />