количество не определено - PullRequest
0 голосов
/ 04 октября 2010

У меня есть переменная, которую я использую для кэширования или временного хранения, чтобы избежать повторных запросов к серверу:

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» в окно оповещения.

Я явно что-то здесь неправильно понимаю.

1 Ответ

0 голосов
/ 04 октября 2010
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;
                getAccounts(div_id);
            }
        });
    } else {

        $("#pnlAccounts").setTemplate($("#tplAccounts").html());
        //alert(div2acc[div_id]);
        $("#pnlAccounts").processTemplate(div2acc[div_id]);
        $("#pnlAccounts > ol > li").click(function () {
            addDesignation($(this).attr("id"), $(this).text(), "");
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...