Обратный вызов в функции-обертке jQuery - PullRequest
5 голосов
/ 15 февраля 2011

Я написал функцию, которая извлекает HTML-шаблон, а затем связывает данные с помощью jQuery.tmpl. Я думаю, что это довольно опрятно и опрятно и заключает в себе то, что мне нужно, и предоставляет мне функцию многократного использования. Мой вопрос, однако, может ли это быть улучшено.

Моя главная проблема в том, что если метод $ .get завершится ошибкой, а также в том, как выполняется функция callBack.

function Bind(templateURL, templateData, templateTarget, callBack){
var req = $.get(templateURL);
    req.success(function(templateHtml) { 
        $(templateTarget).html(''); //clear
        $(templateHtml).tmpl(templateData).appendTo(templateTarget); //add deal
    callBack();
    });
 }

Ответы [ 2 ]

1 голос
/ 15 февраля 2011

Вы можете передать результат tmpl() непосредственно в html () , чтобы очистить целевой контейнер и одновременно добавить новый контент.Вы также можете связать результат $. Get () в свой обработчик success, чтобы избежать использования локальной переменной:

function Bind(templateURL, templateData, templateTarget, callBack)
{
    $.get(templateURL).success(function(templateHtml) { 
        $(templateTarget).html($(templateHtml).tmpl(templateData));
        callBack();
    });
}

Если $.get() завершится неудачно, ничего не произойдет, так какВы не регистрируете обработчик ошибок.То, что этот обработчик сделает, зависит от вас, но вы, возможно, захотите отобразить соответствующее сообщение в окне предупреждения или где-нибудь на странице.

Ваша вторая проблема менее ясна.callBack будет вызываться только в случае успеха и без аргументов.

0 голосов
/ 15 февраля 2011

Вы можете использовать $ .ajax, чтобы назначить и вызвать ошибку.Например:

var jqxhr = $.ajax({ url: "example.php" })
    .success(function() { alert("success"); })
    .error(function() { alert("error"); })

Проверьте API http://api.jquery.com/jQuery.ajax/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...