我有一个使用Angular和Codeigniter的项目。我有一个使用数组作为输入的图形。我使用以下代码在 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);
}
我使用服务从我的 Angular控制器获取此数组并在那里使用它
我做对了吗? 我应该在哪里构建阵列?
的 1。像我一样在Codeigniter控制器中
或
的 2。通过获得
$result = $this->Income_expense_model->get_graph_data($project_id, $year);
未从Codeigniter控制器格式化并在Angular控制器中构建它的数组?
还是别的什么?
答案 0 :(得分:1)
这取决于。
您的问题是:数据应放在何处,服务器端(Codeigniter)或客户端(Angular)?
对于服务器端,有时您可能从模型中获取了太多信息,您可能不希望从此API中暴露太多信息(例如:用户的信息), 所以你可以在回复之前在服务器端删除它们。
对于客户端,有时服务器端的响应数据结构可能不符合您的要求,因此您可以在客户端重新格式化数据。
答案 1 :(得分:1)
我建议使用服务器端。
在服务器端创建一个图形数据阵列,这种格式可以很容易地插入图形。我只是假设你没有使用多个图形数据进行比较。在这种情况下,您可能希望同时使用服务器端和客户端。
为何选择服务器端?
所有JavaScript处理都发生在客户端的浏览器上,这也消耗了客户机器上的资源。这意味着,如果我的浏览器或机器资源较少(RAM,图形渲染引擎等),那么在图形渲染时你会看到动画滞后。服务器拥有比浏览器更多更高端的资源。如果可能的话,最好利用这些资源。