У меня есть переменная, которую я использую для кэширования или временного хранения, чтобы избежать повторных запросов к серверу:
var div2acc = {};
Тогда есть функция, которая получает массив из службы WCF или читает его из моего объекта div2acc:
function getAccounts(div_id){
if(!div2acc.hasOwnProperty(div_id)){
$.ajax({
url: "/Services/OG.svc/GetListOfAccounts",
data: { moduleId: mod_id, divisionCode: div_id },
success: function(data){
div2acc[div_id] = data;
}
});
}
$("#pnlAccounts").setTemplate( $("#tplAccounts").html() );
//alert(div2acc[div_id]);
$("#pnlAccounts").processTemplate(div2acc[div_id]);
$("#pnlAccounts > ol > li").click(function () {
addDesignation($(this).attr("id"), $(this).text(), "");
});
}
Он проверяет, является ли div_id определенным свойством, которое будет содержать массив учетных записей, скопированных из переменной data . Затем он запускает jTemplates и передает данные, хранящиеся в свойстве div2acc [div_id].
Странно то, что в первый раз, когда getAccounts запускается с определенным div_id, я получаю "fcount is undefined" в Firebug. Во второй раз он работает нормально и разбирает шаблон. Я решил вставить alert () прямо перед обработкой шаблона и посмотреть, что div2acc [div_id] передается в processTemplate (). Оказывается, div2acc [div_id] всегда неопределен при первом вызове getAccounts (div_id), но во второй раз все нормально. Что еще более странно, так это то, что когда я вставляю alert () , ошибка «fcount is undefined» больше не появляется, и шаблон анализируется с первой попытки, сразу после того, как я нажимаю «OK» в окно оповещения.
Я явно что-то здесь неправильно понимаю.