2011-11-25 121 views
0

我正在为其中一个应用程序构建一个统计包,我想在显示不同信息的页面上显示8个图形。问题是 - 什么是迭代我的数据在js文件中的最佳方式? (或添加BASE_URL()到样式表?在codeigniter中处理大型js文件的最佳方式

我把我的JS在根/脚本

目前,我有8个图表与我的谷歌charts-

function drawtwitterChart() { 
    var data = new google.visualization.DataTable(); 
    data.addColumn('string', 'x'); 
    data.addColumn('number', 'Twitter'); 

    <?foreach($twitter_results->result_array() as $twitter_result){?> 
     data.addRow(["<?=$twitter_result['hour']?>", <?=goAssocArrayNumeric($twitter_result,0)?>]); 
    <?}?> 
     // Set chart options 
     var options = {'title':'How Much Pizza I Ate Last Night', 
        'width':300, 
        'height':250}; 
     new google.visualization.LineChart(document.getElementById('twitter_chart_div')). 
     draw(data, {curveType: "function", 
        width: 400, height: 320, 
        vAxis: {maxValue: 10}} 
     ); 
    } 

这一切都是在头我的网页,我想删除此,并把它变成js文件?需要仍然可以通过数据 - 迭代想知道别人怎么做呢?

回答

0

有接近这几方面。

最简单的就是为你的动态生成的JS创建一个控制器。调用一个输出JS的观点之前,设置响应头:

$this->output->set_header('Content-type: text/javascript'); 

如果你有大量的JS文件,你可以通过你所有的JS链接调用这个控制器甚至会更进一步。您可以自定义链接以在一次调用中请求所有JS文件,并且控制器可以将它们组合起来并将它们作为单个文件提供。您可以在请求中包含版本信息,以确保获得正确的版本并防止在需要更新时缓存JS。

更进一步,控制器可以缓存给定版本的组合文件,因此您不必在每次请求时都处理它。如果您的JS文件需要动态内容,则可以对JS进行分层,以便将静态JS文件组合并缓存,然后每次生成动态JS文件,并将其与缓存的静态文件结合使用,然后进行处理。

相关问题