javascript - 在 Bootstrap Popover 中放置 JavaScript 内容

标签 javascript jquery twitter-bootstrap chart.js

我在将 JavaScript 放入 Popover 时遇到问题。单击时,我想在 Popover 中放置一个来自 Chart.js 的图表。为了这个例子,让我们使用他们文档中的示例图 http://www.chartjs.org/docs/latest/

到目前为止我有我的 Popover -

<button type="button" 
        class="btn btn-lg btn-primary" 
        data-toggle="popover" 
        title="Good vs. Evil Winrate" 
        data-placement="bottom" 
        data-content="Graph coming soon!">
    Who's Winning?
</button>

以及初始化它的 jQuery -

$(document).ready(function(){
    $('[data-toggle="popover"]').popover();
});

我只是不明白如何将图形放在 Popover 中,我尝试过的所有操作都将其破坏到 Popover 根本无法打开的程度。

最佳答案

您可以设置 popover options in JavaScript直接,你也可以听事件。

这里重要的选项是html: true这允许将 HTML 放置在弹出窗口内容中,否则显示为字符串。

content option documentation状态:

Default content value if data-content attribute isn't present.

然后,收听 shown.bs.popover事件,我们得到之前放置的 <canvas>使用 jQuery 并将其作为上下文传递给新的 Chart.js 实例。

$('[data-toggle="popover"]').popover({
  html: true,
  content: '<canvas id="myChart" width="400" height="400"></canvas>',
}).on('shown.bs.popover', function() {

  new Chart($('#myChart'), {
    // The type of chart we want to create
    type: 'line',

    // The data for our dataset
    data: {
      labels: ["January", "February", "March", "April", "May", "June", "July"],
      datasets: [{
        label: "My First dataset",
        backgroundColor: 'rgb(255, 99, 132)',
        borderColor: 'rgb(255, 99, 132)',
        data: [0, 10, 5, 2, 20, 30, 45],
      }]
    },

    // Configuration options go here
    options: {}
  });
});
<button type="button" class="btn btn-lg btn-primary" data-toggle="popover" title="Good vs. Evil Winrate" data-placement="bottom">Who's Winning?</button>

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.bundle.min.js"></script>

关于javascript - 在 Bootstrap Popover 中放置 JavaScript 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44579887/

相关文章:

javascript - 如何在基于 JSON 结构的复选框中显示内部子 bool 值?

javascript - ZF2 jQuery 日期选择器无法在 ajax 对话框中工作

javascript - 如何使用正则表达式从数据属性中提取某些字符?

twitter-bootstrap - 使用 Rails 3.2.11、simple_form 和 bootstrap 添加日期选择器

javascript - Bootstrap .popover() 'show' & 'destroy' 无法正常工作

javascript - jquery 获取跨度值

php - 回车在 javascript-php 上下文中的意义是什么?

javascript - 单击 dc.js 获取条形图条形的标签

javascript - ajax 附加后可排序不起作用

javascript - JS "//= require bootstrap/"语法是什么意思? (Bootstrap 3 Sass)