【问题标题】:Ajax reloading content in Bootstrap tabAjax 在 Bootstrap 选项卡中重新加载内容
【发布时间】:2019-05-31 19:40:39
【问题描述】:

问题似乎出在几个地方。要开始我的图表,我试图在第三个选项卡中显示不会显示绑定到 div 的 JavaScript。我相信这是因为它们在 HTML 类中设置为非活动状态,然后不会加载图表 <div> 来显示图表。
我不确定解决这个问题的方法,我研究了 DOM 事件和 Ajax 加载函数。但我不确定这是否真的是正确的答案。

我尝试解决此问题的方法是使选项卡处于活动状态。但是说将来我想要所有三个选项卡上的图表,它仍然只加载活动选项卡。另外,我尝试将顶点图表图形 JS 代码放在我的点击功能中,这也可以。但是,如果您按 1 -> 2 -> 3 的顺序单击选项卡,您将再次加载 3 个图表。

所有这些都使用 Apex 图表、Bootstrap、PHP 和 JS。

<!-- Nav tabs -->
<ul class="nav nav-tabs">
    <li class="nav-item"><a class="nav-link active" href="#home">Home</a></li>
    <li class="nav-item"><a class="nav-link" href="#menu1">Menu 1</a></li>
    <li class="nav-item"><a class="nav-link" href="#menu2">Menu 2</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
    <div id="home" class="container tab-pane active"><br>
        <h3>HOME</h3>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
    </div>
    <div id="menu1" class="container tab-pane fade"><br>
        <h3>Menu 1</h3>
        <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
    </div>
    <div id="menu2" class="container tab-pane fade"><br>
        <div class="row">
            <div class="col-lg-6">
                <h3>Income categories</h3>
                <div id="chart"></div>
            </div>
            <div class="col-lg-6">
                <h3>Expense categories</h3>
                <div id="chart2"></div>
            </div>
        </div>
    </div>
</div>
<script>
$(document).ready(function(){
  $(".nav-tabs a").click(function(){
    $(this).tab('show');
  });
});
</script>
</body>
</html>
<!--Loads in the bar chart for analytics-->
<script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
<?php include($_SERVER['DOCUMENT_ROOT'] . "/Management/scripts/incomegraph.php"); ?>

这是 Apex 图表

var options = {
    chart: {
        height: 350,
        type: 'bar',
    },
    plotOptions: {
        bar: {
            horizontal: true,
        }
    },
    dataLabels: {
        enabled: true
    },
    series: [{
        data: [
            400,
            430,
            448,
            470,
            540]
    }],
    xaxis: {
        categories: [
            'Management Income',
            'Late Fee Income',
            'Application Fee Income',
            'Convience Fees',
            'Laundry',],
    }
}
var chart = new ApexCharts(document.querySelector("#chart"),options);

chart.render();

var options = {
    chart: {
        height: 350,
        type: 'bar',
    },
    plotOptions: {
        bar: {
            horizontal: true,
        }
    },
    dataLabels: {
        enabled: true
    },
    series: [{
        data: [400, 430, 448, 470, 540]
    }],
    xaxis: {
        categories: [
            'Legal fees',
            'Utilities',
            'Cleaning and Maintenance',
            'Wages and Salaries',
            'Repairs',],
    }
}
var chart = new ApexCharts(document.querySelector("#chart2"),options);

chart.render();

我得到的唯一错误信息如下:

TypeError: Cannot read property 'forEach' of undefined
    at i.value (apexcharts:6)
    at i.value (apexcharts:6)
    at apexcharts:6
    at it (apexcharts:6)
    at new $ (apexcharts:6)
    at i.value (apexcharts:6)
    at apexcharts:6

我已查看帖子寻求帮助,但没有一个足够的答案 Bootstrap load AJAX content in Inactive Tab Reloading Content of Ajax Tab bootstrap popover: reload content with ajax

【问题讨论】:

    标签: javascript php jquery html apexcharts


    【解决方案1】:

    这是 ApexCharts 中的一个错误,最近在 v3.7.1 中修复并发布 请将 ApexCharts 更新到 3.7.1,希望问题会自行解决。

    【讨论】:

    • 你是最棒的!谢谢你,我正在拔头发试图解决这个问题!我浪费了 2 天,但你是一个了不起的人!
    • 给您带来的不便,我们深表歉意。该库非常新,需要更多测试以避免此类问题。谢谢夸奖!
    • 哦,不用担心,仍然是最好的图表库,我想提交一些代码更改来帮助您。我对条形图有一个很酷的想法,它将总数加载到图表的右侧而不是图表上。我将尝试制作我的作品,然后将其发送给您,也许可以作为示例。代码真的很不错,继续努力!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    相关资源
    最近更新 更多