jqplot不适用于动态数据

时间:2013-04-25 14:25:08

标签: jquery cordova jquery-mobile jqplot jquery-mobile-pageshow

我正在尝试使用 jqplot 绘制从SQLite DB for Phonegap检索数据的条形图 - Android如何对db值使用相同的代码。这个带有静态数据的代码在标记内工作正常,但是当我试图将这些代码放在$('#pageid').live('pageinit',function(){});中时,它就不起作用了。什么原因?

    

<head>
<script type="text/javascript" src="js/lib/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="js/lib/jquery.jqplot.js"></script>
<script type="text/javascript" src="js/lib/jqplot.barRenderer.js"></script>
<script type="text/javascript" src="js/lib/jqplot.categoryAxisRenderer.js"></script>
<script type="text/javascript" src="js/lib/jqplot.pointLabels.js"></script>
<link rel="stylesheet" href="css/lib/jquery.jqplot.css"/>
<script type="text/javascript">
 var s1 = [10,0,0,0,0];
 var s2 = [0,20,0,0,0];
 var s3 = [0,0,30,0,0];
 var s4 = [0,0,0,25,0];
 var s5 = [0,0,0,0,0];
 var ticks = ['FAJR', 'ZOHAR', 'ASR', 'MAGHRIB','ISHA'];    

 var plot1 = $.jqplot('chart1', [s1, s2, s3,s4,s5], {
        // The "seriesDefaults" option is an options object that will
        // be applied to all series in the chart.
        seriesDefaults:{
             title:'Namaz Vs MissingPrayer',
            renderer:$.jqplot.BarRenderer,
            rendererOptions: {fillToZero: true}
        },
        series:[
                {label:'Fajr'},
                {label:'Z'},
                {label:'A'},
                {label:'M'},
                {label:'I'}


            ],
            legend: {
                show: true,
                placement: 'outsideGrid'
            },
            axes: {
                // Use a category axis on the x axis and use our custom ticks.
                xaxis: {
                    renderer: $.jqplot.CategoryAxisRenderer,
                    label:'NAMAZ',
                    ticks: ticks,

                },
                // Pad the y axis just a little so bars can get close to, but
                // not touch, the grid boundaries.  1.2 is the default padding.
                yaxis: {
                    min:0,
                    label:'MISSING PRAYERS',
                    pad: 1.05,
                    tickOptions: {formatString: '%d'}
                }
            }
        });
});
 </script>
</head>
<body>
<div data-role="page" id="graph">
<div data-role="content">
<div id="chart1" style="width:600px; height:350px;"></div>
</div>
</div>
</body>

</div>

1 个答案:

答案 0 :(得分:1)

您需要将其置于 pageshow 事件中。

只有在 pageshow 事件期间才能正确计算页面高度。

所以像这样使用它:

$(document).on('pageshow','#pageid',function(){}); 

此外,如果您使用的是jQuery版本1.9.1+,则无法使用 live ,因为它已被弃用且不再存在。