У меня есть переменная, которую я использую для кэширования или временного хранения, чтобы избежать повторных запросов на сервер:fcount неопределен
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 является определенным имуществом, которое будет содержать массив счетов, скопированных из данных переменных. Затем он запускает jTemplates и передает данные, хранящиеся в свойстве div2acc [div_id].
Странно, что при первом запуске getAccounts запускается определенный div_id, я получаю «fcount undefined» в Firebug. Во второй раз он работает отлично и анализирует шаблон. Я решил вставить предупреждение () непосредственно перед обработкой шаблона и посмотреть, что div2acc [div_id] передано processTemplate(). Оказывается, div2acc [div_id] всегда не определено при первом вызове getAccounts (div_id), но во второй раз это нормально. Что еще более странно, когда я вставляю alert() сам, «fcount is undefined» ошибка больше не отображается, и шаблон анализируется с первой попытки, сразу после нажатия «ОК» в окне предупреждения.
Я, очевидно, неправильно понимаю что-то здесь.
Это устраняет проблему, которую я предполагаю, имеет отношение к сфере действия, но я до сих пор не понимаю. Однако это создает еще одну проблему, которая заключается в том, что шаблон получает визуализацию только тогда, когда свойство div2acc [div_id] не существует. Тем не менее, я хочу, чтобы шаблон получал визуализацию каждый раз - просто запросите его с сервера, если он еще не был (и затем кеширует его через свойство div2acc). Вот почему я взял эти строки из предложения if() в первую очередь. – alkos333
ОК, попробуйте мое редактирование. – Reigel
Отлично, что сработало. Не могли бы вы объяснить, почему я div2acc не получил его свойство сразу, и getAccounts (div_id) необходимо вызвать снова. Я просто не знаю, что здесь происходит, пытаясь понять проблемы, связанные с определением области. – alkos333