我在哪里为angular-codeigniter项目中的图形创建数组

时间:2016-11-18 03:51:53

标签: php angularjs codeigniter

我有一个使用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控制器中构建它的数组?
还是别的什么?

2 个答案:

答案 0 :(得分:1)

这取决于。

您的问题是:数据应放在何处,服务器端(Codeigniter)或客户端(Angular)?

对于服务器端,有时您可能从模型中获取了太多信息,您可能不希望从此API中暴露太多信息(例如:用户的信息), 所以你可以在回复之前在服务器端删除它们。

对于客户端,有时服务器端的响应数据结构可能不符合您的要求,因此您可以在客户端重新格式化数据。

答案 1 :(得分:1)

我建议使用服务器端。

在服务器端创建一个图形数据阵列,这种格式可以很容易地插入图形。我只是假设你没有使用多个图形数据进行比较。在这种情况下,您可能希望同时使用服务器端和客户端。

为何选择服务器端?

所有JavaScript处理都发生在客户端的浏览器上,这也消耗了客户机器上的资源。这意味着,如果我的浏览器或机器资源较少(RAM,图形渲染引擎等),那么在图形渲染时你会看到动画滞后。服务器拥有比浏览器更多更高端的资源。如果可能的话,最好利用这些资源。