У меня есть DraftForm
поведение при обработке объекта для черновой формы, изначально предназначенное для использования на определенной странице панели инструментов: c:
let DraftForm = (formSelector, $parent, url) => {
let init = () => {
// initialize form behavior...
// initialize behavior specific to the page
if (page == '1') initPageSpecific();
};
let initPageSpecific = () => {};
return {
load: () => {
$.ajax(...).done(() => init());
}
}
};
Однако теперь я собираюсь использовать это повторно компонент, так что есть определенные кусочки оригинальной функции init
, которые больше не относятся к черновому проекту generi c. Например, при отправке или закрытии формы на странице панели инструментов мы обновляем sh список черновиков, показанных пользователю. Тем не менее, теперь это больше не применимо после извлечения общей функциональности. Я ищу подходящие способы извлечения этой функциональности и развертывания c версий компонента с указанием сценариев.
Как расширить DraftForm
, чтобы определить новые "подклассы" этого объекта? Например, DashboardDraftForm
, где init
будет вызывать родительскую функцию, а также поведение c, определяемое страницей. Или также UserDraftForm
, где вы находитесь в профиле пользователя и хотите отправить им электронное письмо.
Текущий подход page == '1'
- это просто плохой дизайн.