2016-11-18 81 views
2

我有一個使用Angular和Codeigniter的項目。我有一個使用數組作爲輸入的圖。我用下面的代碼來構建陣列中笨控制器我在哪裏可以在angular-codeigniter項目中創建圖形陣列

function get_graph_data() 
{ 
    $project_id = $this->site_settings->get_decrypt_id($this->input->post('project_id')); 
    $year = ($this->input->post('year') ? $this->input->post('year') : date('Y')); 
    $result = $this->Income_expense_model->get_graph_data($project_id, $year); 
    for ($i = 1; $i <= 12; $i++) { 
     $dummy_date = strtotime("1991-" . $i . "-13"); 
     $month_name = date('F', $dummy_date); 
     $array['months'][$i] = $month_name; 
     $array['income'][$i] = "0"; 
     $array['expense'][$i] = "0"; 
    } 

    foreach($result as $row) { 
     if ($row->type == 1) $array['income'][$row->month_num] = $row->amount; 
     else $array['expense'][$row->month_num] = $row->amount; 
    } 

    $data['months'] = array_values($array['months']); 
    $data['income'] = array_values($array['income']); 
    $data['expense'] = array_values($array['expense']); 
    echo json_encode($data); 
} 

我用服務來得到我的角控制器這個數組,並使用它。
我做對了嗎? 我應該在哪裏構建數組?
1.在笨控制器像我一樣

2.想起來這是不是從笨控制器格式化
$result = $this->Income_expense_model->get_graph_data($project_id, $year);
陣列,並在角控制器建設呢?
別的東西?

回答

1

這取決於。

你的問題是:數據應該在哪裏格式化,服務器端(Codeigniter)還是客戶端(Angular)?

對於服務器端,有時您可能會從您的模型中獲取太多信息,您可能不想公開這些API的太多信息(例如:用戶信息),因此您可以在響應之前在服務器端刪除它們。

對於客戶端,有時服務器端的響應數據結構可能不適合你想要的,所以你可以在客戶端重新格式化數據。

1

我會建議使用服務器端。

在服務器端創建一個圖形數據數組,這種格式可以方便插入圖形。我只是假設你沒有使用多個圖形數據進行比較。在這種情況下,你會想同時使用服務器端和客戶端。

爲什麼服務器端?

所有的JavaScript處理都發生在客戶端的瀏覽器上,這也會消耗客戶端機器的資源。這意味着,如果我的瀏覽器或計算機資源較少(RAM,圖形渲染引擎等),那麼當圖形渲染時,您會看到動畫滯後。服務器擁有比瀏覽器更多,更高端的資源。如果可能的話,利用這些資源總是更好。

相關問題