Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在deck.js内的转换上重新渲染(或设置动画)chart.js图表_Javascript_Jquery_Chart.js_Chart.js2_Deck.js - Fatal编程技术网

Javascript 在deck.js内的转换上重新渲染(或设置动画)chart.js图表

Javascript 在deck.js内的转换上重新渲染(或设置动画)chart.js图表,javascript,jquery,chart.js,chart.js2,deck.js,Javascript,Jquery,Chart.js,Chart.js2,Deck.js,我制作了一个deck.js幻灯片,其中一个幻灯片中有一个chart.js piechart 我正在尝试让piechart在每次幻灯片转换时都设置动画。它当前仅在浏览器刷新后第一次转换到时设置动画 我尝试添加deck.events.js扩展并使用chart.update(),但它说图表没有定义。如果没有deck.becameCurrent代码段,图表将显示,console.log可以使用该代码段 如何让deck.event识别图表实例 chart.update()是在此处触发初始动画的正确方法吗

我制作了一个deck.js幻灯片,其中一个幻灯片中有一个chart.js piechart

我正在尝试让piechart在每次幻灯片转换时都设置动画。它当前仅在浏览器刷新后第一次转换到时设置动画

我尝试添加deck.events.js扩展并使用
chart.update()
,但它说图表没有定义。如果没有
deck.becameCurrent
代码段,图表将显示,
console.log
可以使用该代码段

如何让deck.event识别图表实例

chart.update()
是在此处触发初始动画的正确方法吗

    <body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js'></script>
<script src='{% static "vendor/deckjs/core/deck.core.js" %}'></script>
<script src='{% static "vendor/deckjs/extensions/events/deck.events.js" %}'>


        <div class="deck-container">
            <section class="slide" id="pie">
                <script>
                var ctx1 = $("#NestedChart").get(0).getContext("2d");
                var myChart1 = new Chart(ctx1, {
                    type: 'doughnut',
                    data: {
                        labels: [1,2,3,4,5],        
                        datasets: [{
                            data: [10,89,4,34,33],
                        },
                        options: {
                            animation: {
                                duration:2000
                    },
            });
            })
                </script>

                <div style="position: relative; height: 500px; width:500px" class='col-sm-6'>
                    <canvas style="position:absolute; top: 0px; left: 0px" id="NestedChart" width="400" height="400"></canvas>
                </div>
           </section>
       </div>

    <script>
      $(function() {
        $.deck('.slide', {countNested: false});

        $("#pie").bind('deck.becameCurrent', function(ev, direction) {
            console.log("test chart update");
            myChart1.update();
         });
      });
    </script>
    </body>

var ctx1=$(“#嵌套图表”).get(0.getContext(“2d”);
var myChart1=新图表(ctx1{
键入:“甜甜圈”,
数据:{
标签:[1,2,3,4,5],
数据集:[{
数据:[10,89,4,34,33],
},
选项:{
动画:{
持续时间:2000年
},
});
})
$(函数(){
$.deck('.slide',{countNested:false});
$(“#饼”).bind('deck.becameCurrent',函数(ev,方向){
控制台日志(“测试图表更新”);
myChart1.update();
});
});

我通过将定义图表的代码移动到
becameCurrent
事件函数中来实现这一点:

 $(function() {
    $.deck('.slide', {countNested: false});
    $.deck('showGoTo');
    $("#pie").bind('deck.becameCurrent', function(ev, direction) {
        const ctx1 = $("#NestedChart").get(0).getContext("2d");
        const myChart1 = new Chart(ctx1, {.....
然后在每次转换时重新呈现图表。if循环只允许它在向前转换时设置动画。 将myChart1变量声明放在任何其他位置都会第一次初始化图表,但是becameCurrent()函数中的
myChart1.render()
myChart1.reset().update()
似乎仍然没有任何作用