2011-11-25 141 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文件,並將其與緩存的靜態文件結合使用,然後進行處理。

相關問題