【发布时间】:2017-03-20 09:19:57
【问题描述】:
在指向特定数据源/API 之后,我有一个呈现条形图 (HTML/CSS/JavaScript) 的小部件。有一个配置参数可以更改数据源/API,所以我可以拥有同一个小部件的多个实例。
是否可以使用 shadow-dom 完成上述操作?我尝试了以下操作,但注意到小部件无法选择正确的 div 元素来执行渲染部分。
var host = document.querySelector("#" + gadgetContainer.getAttribute("data-grid-id"));
var root = host.createShadowRoot();
var template = document.createElement('template');
template.innerHTML = gadgetContainer.outerHTML;
root.appendChild(document.importNode(template.content, true));
以下是执行小部件渲染的 JavaScript 逻辑,为了清楚起见,我删除了数据集和配置。
(function () {
"use strict";
//dataset used to plot charts
var dataTable = {}, //REMOVED
width = document.querySelector('*::shadow #bar').offsetWidth,
height = 270, //canvas height
config = {}; //REMOVED
widget.renderer.setWidgetName("bar-chart", "BAR CHART");
chartLib.plot("*::shadow #bar",config, dataTable);
}());
以下是简单的 HTML div,所有必需的样式表和脚本都在此页面中。
<div id="bar" class="bar"></div>
【问题讨论】:
-
@Supersharp 渲染同一小部件的多个实例。
-
@Supersharp 我用更多代码更新了问题。我只使用 shadow-dom。
标签: javascript html css web-component shadow-dom