Magic Mirror模块中Canvas代码存在但canvas-gauges仪表盘不显示问题
原因说明
Canvas Gauges库默认仅在页面初始DOM加载完成时自动扫描全页canvas元素,读取配置完成仪表盘初始化。你通过代码动态插入的canvas元素不会触发默认的扫描逻辑,因此无法正常渲染。手动剪切粘贴canvas元素的操作会触发DOM更新,库监听到变化后重新扫描到该元素,才完成初始化渲染。
解决方法
可以选择以下任意一种方案处理:
- 手动初始化单个仪表盘
在完成canvas元素的创建、属性设置、DOM插入操作后,直接调用对应类型的初始化方法即可:
// 原有代码不变 var indoorGauge = document.createElement('canvas'); indoorGauge.id = 'indoorGauge'; ... indoorGauge.setAttribute('data-animation-target','plate'); indoorPressure.appendChild(indoorGauge); insideTele.appendChild(indoorPressure); wrapper.appendChild(insideTele); // 新增初始化代码,径向仪表盘用RadialGauge,线性仪表盘用LinearGauge new RadialGauge(indoorGauge).draw();
- 触发全局批量初始化
如果同时存在多个动态生成的gauge元素,可以调用全局扫描方法一次性完成所有未初始化的gauge配置:
window.GaugeCollection.scan();
内容的提问来源于stack exchange,提问作者DottoreM
相关产品推荐
相关产品推荐

