因此,我试图在 bootstrap 弹出窗口中呈现一个图表,但它似乎没有呈现.我try 了所有可能的方法来调试,但我不能完全弄清楚哪里出了问题.因此,任何帮助都将不胜感激.以下是我的html代码:

<div id="popover-content" style="display: none;">
      {%include 'scroll_card.html'%}
    </div>

注意:我正在使用JJJA来呈现我的html代码,其中包含我想要在弹出窗口中显示的图形.以下是scroll_card.html文件中的内容

  <div class='summary'><h5 class='header'> Chart </h5>
        <div class="chart" style="height: 400px;">
        <canvas id='hourly-chart' width="300" height="400">Hello</canvas></div>
    </div>

和我的js代码:


document.addEventListener('DOMContentLoaded', function() {
const myPopoverTrigger = document.getElementById('popover');
let hourChart =null;
const instance = new mdb.Popover(myPopoverTrigger, {
    title:"Hourly Forecast",
    sanitize:false,
    html:true,
    content: function(){
        popContent = document.querySelector('#popover-content').innerHTML;
        return popContent;
    }
    
});


myPopoverTrigger.addEventListener('show.mdb.popover', () => {
    const ctxHour = document.getElementById('hourly-chart').getContext('2d');
    console.log(ctxHour);
    if (hourChart) {
            hourChart.destroy();
        }
hourChart = new Chart(ctxHour, {
    type: 'line',
    data: {
        labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
        datasets: [{
          label: '# of Votes',
          data: [12, 19, 3, 5, 2, 3],
          borderWidth: 1
        }]
      },
      options: {
        responsive: false,
        scales: {
          y: {
            beginAtZero: true
          }
        }
      }
    
    });
    console.log(hourChart);
});
    myPopoverTrigger.addEventListener('hide.mdb.popover', () => {
        if (hourChart) {
            hourChart.destroy();
        }

    });
});

另请注意:当我使用我的console.log图表(HourChart)时,它在控制台中返回一个图表对象,该对象提供了一些奇怪的属性,就像在选项中,它返回的x和y是未定义的.我是不是做错了什么,或者错过了什么?

谢谢

编辑:

这是我的控制台,当我执行console.log(HourChart).

Console Output

推荐答案

应在选项中直接提供HTML内容.否则,它不会被及时添加到DOM中,从而无法呈现画布/图表.

const instance = new mdb.Popover(myPopoverTrigger, {
        title: "Hourly Forecast",
        sanitize: false,
        html: true,
        content: `<div id="popover-content">
                <div class='summary'>
                    <h5 class='header'> Chart </h5>
                    <div class="chart" style="height: 400px; width: 600px;">
                        <canvas id='hourly-chart' width="600" height="400"></canvas>
                    </div>
                </div>
            </div>`

    });

演示:https://codeply.com/p/uxPMnF28ET

Javascript相关问答推荐

使用JavaScript单击上一个或下一个特定按钮创建卡滑动器以滑动单个卡

防止用户在selectizeInput中取消 Select 选项

使用下表中所示的值初始化一个二维数组

Exceljs:我们在file.xlsx(...)&#中发现了一个问题'"" 39人;

嵌套异步JavaScript(微任务和macrotask队列)

当试图显示小部件时,使用者会出现JavaScript错误.

使用Promise.All并发解决时,每个promise 的线性时间增加?

是什么导致了这种奇怪的水平间距错误(?)当通过JavaScript将列表项元素追加到无序列表时,是否在按钮之间?

如何在使用rhandsontable生成表时扩展数字输入验证?

如何创建返回不带`new`关键字的实例的类

<;img>;标记无法呈现图像

Docent.cloneNode(TRUE)不克隆用户输入

使用自动识别发出信号(&Q)

React:防止useContext重新渲染整个应用程序或在组件之间共享数据而不重新渲染所有组件

使用线性插值法旋转直线以查看鼠标会导致 skip

将Auth0用户对象存储在nextjs类型脚本的Reaction上下文中

是否可以在不更改组件标识的情况下换出Reaction组件定义(以维护状态/引用等)?如果是这样的话,是如何做到的呢?

如何在Jest中模拟函数

ReactJS在类组件中更新上下文

使用重新 Select 和对象理解 Select 器备忘