Я пытаюсь повторно инициализировать/перерисовать все компоненты MDC для элементов формы, когда их значения изменяются через javascript, но пока мои попытки не увенчались успехом. Есть ли простой способ добиться этого с помощью встроенного метода MDC, о котором я не знаю?
Я создал собственный способ перезагрузки компонентов MDC с html-атрибутом data-mdc-reload
, который срабатывает при щелчке, но это не совсем работает.
Вот код, показывающий проблему: https://codepen.io/oneezy/pen/XvMavP
- нажмите кнопку
UPDATE FORM VALUES
, чтобы добавить данные - вывод
VALUE
красным цветом означает, что компонент сломан/синим цветом означает, что он работает - нажмите кнопку
RESET
, чтобы сбросить данные в исходное состояние (это тоже не работает)
JavaScript
// MDC Reload Component
function mdcReload(time = 1) {
var components = mdc.autoInit();
let reloadComponents = document.querySelectorAll('[data-mdc-reload]');
for (const reloadItem of reloadComponents) {
reloadItem.addEventListener("click", async () => {
setTimeout(function() {
components.forEach((c) => c.layout && c.layout());
}, time);
});
}
}
// Initialize MDC Components
mdcReload();