2017-06-20 64 views
0

我遇到了下一個問題 - >當我在前端使用由php echo標記打印的編碼json字符串時,一切正常,但是當我想用它角度獲得函數我不明白它的工作。在Chart.js中使用JSON和Angular.js

笨控制器(後端)

public function getLogs(){ 
     $this->load->model('Home_model'); 
     $logs = $this->Home_model->getLogs(); 
     echo json_encode($logs); 
    } 

AngularJs控制器(前端)

$http.get('index.php/Welcome/getLogs') 
      .then(function (response) { 
       json = response.data; 
      }); 


     var chartjsData = []; 
     for (var i = 0; i < json.length; i++) { 
      chartjsData.push(json[i].aantal); 
     } 

     var chartjsLabels = []; 
     for (var i = 0; i < json.length; i++) { 
      chartjsLabels.push(json[i].datum); 
     } 

     var ctx = document.getElementById('myChart').getContext('2d'); 
     var myChart = new Chart(ctx, { 
      type: 'line', 
      data: { 
       labels: chartjsLabels, 
       datasets: [{ 
        label: "Aantal meldingen", 
        borderColor: 'rgb(255, 131, 48)', 
        data: chartjsData, 
        fill: false 
       }] 
      }, 
      options: { 
       responsive: false 
      } 

     }); 

提前感謝!

+0

你可以在瀏覽器中的console.log JSON和告訴我們什麼格式? –

+0

多個對象 - >對象 aantal:「17」 datum:「2017-05-31 –

+0

響應(網絡督察):[{」datum「:」2017-05-31「,」aantal「:」17「 },{ 「基準」: 「2017年6月1日」, 「aantal」: 「22」},{ 「基準」: 「2017年6月2日」, 「aantal」: 「47」},{ 「基準」 : 「2017年6月8日」, 「aantal」: 「2」},{ 「基準」: 「2017年6月11日」, 「aantal」: 「2」},{ 「基準」:「2017-06- 19「,」aantal「:」2「},{」datum「:」2017-06-20「,」aantal「:」21「}] –

回答

1

因爲,該$http.get()方法是異步的,你需要初始化圖表的$http.get()回調函數裏面,像這樣......

$http.get('index.php/Welcome/getLogs') 
    .then(function(response) { 
     json = response.data; 

     json = JSON.parse(json); //parse JSON string (if needed) 

     var chartjsData = []; 
     for (var i = 0; i < json.length; i++) { 
     chartjsData.push(json[i].aantal); 
     } 

     var chartjsLabels = []; 
     for (var i = 0; i < json.length; i++) { 
     chartjsLabels.push(json[i].datum); 
     } 

     var ctx = document.getElementById('myChart').getContext('2d'); 
     var myChart = new Chart(ctx, { 
     type: 'line', 
     data: { 
      labels: chartjsLabels, 
      datasets: [{ 
       label: "Aantal meldingen", 
       borderColor: 'rgb(255, 131, 48)', 
       data: chartjsData, 
       fill: false 
      }] 
     }, 
     options: { 
      responsive: false 
     } 

     }); 
    }); 
+0

嘗試/不解析JSON –

+1

是的,我看到了它,只是刪除了我的反應,這解決了這個問題的很大一部分!我正在看看其餘部分,我會在工作時發佈信息ng 100%。謝謝! –

+0

解決!我還有一個問題;當我想要更新信息現在例如一個按鈕,使一個新的http請求我只需要更改標籤/數據的數據? < - 只有第一個init必須在get函數中進行? –