我正在为我建立的其中一个应用程序构建一个stats包,我想在页面上显示8个图表,显示不同的信息。问题是 - 在js文件中迭代我的数据的最佳方法是什么? (或将base_url()添加到样式表中?
我将我的js保存在root / scripts
中目前我的谷歌排行榜有8张图表 -
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 :(得分:0)
有几种方法可以解决这个问题。
最简单的方法是为动态生成的JS创建一个控制器。在调用输出JS的视图之前,设置响应头:
$this->output->set_header('Content-type: text/javascript');
如果你有很多JS文件,你可以通过让所有的JS链接调用这个控制器来进一步发展它。您可以在一次调用中自定义链接以请求所有JS文件,控制器可以将它们组合在一起并作为单个文件提供。您可以在请求中包含版本信息,以确保获得正确的版本,并防止在需要更新时缓存JS。
更进一步,控制器可以缓存给定版本的组合文件,因此您不必在每次请求时对其进行处理。如果你有需要动态内容的JS文件,你可以对你的JS进行分层,以便将静态JS文件组合和缓存,然后每次生成动态JS文件,结合缓存的静态,然后提供。