Я закодировал файл JavaScript:Вызов функции на функции - Jquery
$(function() {
return $(".ajax-form").on("ajax:success", function(e, data, status, xhr) {
var model_name;
model_name = $(this).data('model-name');
console.log('ajax form success');
if (model_name === 'contact') {
return $('#modal-alert-contact').modal('show');
} else {
return $('#modal-alert-demo').modal('show');
}
}).bind("ajax:error", function(e, xhr, status, error) {
var elm, messages, model_name;
model_name = $(this).data('model-name');
console.log('ajax form error');
console.log(model_name);
if (model_name === 'contact') {
if (xhr.responseJSON["email"]) {
elm = $('.alert-contact-fields');
messages = [];
$.each(xhr.responseJSON, function(id, error_messages) {
return messages.push(("<li><strong class='titleize'>" + id + "</strong> - can't be blank</li>").replace(/_/g, " "));
});
elm.find('.messages').html(messages);
return elm.removeClass('hide');
} else {
elm = $('.alert-contact-fields');
return elm.addClass('hide');
}
} else {
if (xhr.responseJSON["company_name"]) {
elm = $('.alert-demo-fields');
messages = [];
$.each(xhr.responseJSON, function(id, error_messages) {
return messages.push(("<li><strong class='titleize'>" + id + "</strong> - can't be blank</li>").replace(/_/g, " "));
});
elm.find('.messages').html(messages);
return elm.removeClass('hide');
} else {
elm = $('.alert-demo-fields');
return elm.addClass('hide');
}
}
});
});
и я нашел его грязные, и повторяющиеся одинаковые коды. То, что я хочу сделать, это часть:
messages = [];
$.each(xhr.responseJSON, function(id, error_messages) {
return messages.push(("<li><strong class='titleize'>" + id + "</strong> - can't be blank</li>").replace(/_/g, " "));
});
elm.find('.messages').html(messages);
return elm.removeClass('hide');
Я хочу, чтобы эта часть является функцией, и после того, как я могу это сделать, я буду называть эту функцию, чтобы использовать его на моей функции. Возможно ли это или есть какая-то техника для улучшения моей структуры кодирования?
Спасибо!
ОК я отредактирую его – BartSabayton
Так что поставьте этот код в функцию, вызовите его с некоторыми параметрами и сделайте что-нибудь с его возвращаемым значением. Я не понимаю, в чем проблема. Обе ветви 'if (model_name === 'contact') {' выглядят почти одинаково, поэтому преобразуем различия в параметры функции. –
Зачем вы включили тег «coffeescript»? Здесь нет кофейни. –