当表单元素的值通过javascript更改时,我正在尝试重新初始化/重绘所有MDC组件,但到目前为止我的尝试都失败了。有没有一种简单的方法可以使用我不知道的内置 MDC 方法来实现这一点?
我创建了一种自定义方法来重新加载 MDC 组件,其中包含一个data-mdc-reload
在单击时触发的 html 属性,但这并不能很好地完成工作。
这是一个显示问题的代码笔: 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();