首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义元素模板标记未呈现画布标记元素

自定义元素模板标记未呈现画布标记元素
EN

Stack Overflow用户
提问于 2019-01-19 18:28:22
回答 1查看 359关注 0票数 2

HTML标记模板未呈现画布标记元素

代码语言:javascript
运行
复制
class BarChart extends HTMLElement {

    connectedCallback() {
        let templateEl = document.getElementById("id_bar-chart_template");
        this.append(templateEl.content.cloneNode(true));
        let ctx = document.querySelector("#id_bar-chart");  // this works
        // let ctx = this.querySelector("#id_bar-chart_inside_template");
        // this does not work
        new Chart(ctx, {
            type: 'bar',
            data: {
                labels: ["Africa", "Asia", "Europe", "Latin America", "North America"],
                datasets: [
                    {
                        label: "Population (millions)",
                        backgroundColor: ["#3e95cd", "#8e5ea2", "#3cba9f", "#e8c3b9", "#c45850"],
                        data: [2478, 5267, 734, 784, 433]
                    }
                ]
            },
            options: {
                legend: {display: false},
                title: {
                    display: true,
                    text: 'Predicted world population (millions) in 2050'
                }
            }
        });
    }

}


customElements.define("bar-chart", BarChart);

使用自定义元素的HTML块:

代码语言:javascript
运行
复制
<div class="container">
    <div class="row">
        <div class="col-12">
            <h1>Products and brands of vendors</h1>
                <canvas id="id_bar-chart"></canvas>
            <bar-chart data-url="">
            </bar-chart>

        </div>
    </div>
</div>
<template id="id_bar-chart_template">
<canvas id="id_bar-chart_inside_template"></canvas>
<h3>Inside template</h3>
</template>
<script src="js/Chart.min.js"></script> 
<script>src="/custom_elements/bar_chart.js"></script>

根据https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template,对模板标签的内容没有限制。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-19 19:16:48

自定义元素的默认display CCS样式是inline

您应该将其设置为blockinline-block,您将在自定义元素中看到<canvas>

代码语言:javascript
运行
复制
<style>
    canvas { border: 1px solid black }
    bar-chart { border: 1px solid red ; display: block }
</style>

代码语言:javascript
运行
复制
class BarChart extends HTMLElement {
  connectedCallback() {
    let templateEl = document.getElementById("id_bar-chart_template");
    this.append(templateEl.content.cloneNode(true));
    let ctx = this.querySelector("#id_bar-chart_inside_template");
        new Chart(ctx, {
        type: 'bar',
        data: {
            labels: ["Africa", "Asia", "Europe", "Latin America", "North America"],
            datasets: [
                {
                    label: "Population (millions)",
                    backgroundColor: ["#3e95cd", "#8e5ea2", "#3cba9f", "#e8c3b9", "#c45850"],
                    data: [2478, 5267, 734, 784, 433]
                }
            ]
        },
        options: {
            legend: {display: false},
            title: {
                display: true,
                text: 'Predicted world population (millions) in 2050'
            }
        }
    });
  }
}
customElements.define("bar-chart", BarChart);
代码语言:javascript
运行
复制
canvas { border: 1px solid black }
bar-chart { border: 1px solid red ; display: inline-block }
代码语言:javascript
运行
复制
<script src=https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js></script>
<div class="container">
    <div class="row">
        <div class="col-12">
            <h1>Products and brands of vendors</h1>
            <bar-chart data-url="">
            </bar-chart>
        </div>
    </div>
</div>
<template id="id_bar-chart_template">
    <canvas id="id_bar-chart_inside_template"></canvas>
    <h3>Inside template</h3>
</template>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54266138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档