2017-03-31 106 views
0

是否可以使用EJS標籤將數據添加到圖形中?這裏是我當前圖的數據:使用ChartJS的EJS標籤?

var canvas = document.getElementById('myChart'); 
var data = { 
    labels: ["One", "February", "March", "April", "May", "June", "July"], 
    datasets: [ 
     { 
      label: "My First dataset", 
      backgroundColor: "rgba(255,99,132,0.2)", 
      borderColor: "rgba(255,99,132,1)", 
      borderWidth: 2, 
      hoverBackgroundColor: "rgba(255,99,132,0.4)", 
      hoverBorderColor: "rgba(255,99,132,1)", 
      data: [10, 20, 81, 56, 55, 40], 
     } 
    ] 
}; 

我想要做這樣的事情:

labels: ["<%= currentUser.datapoint1 %>", "<%= currentUser.datapoint2 %>", "<%= currentUser.datapoint3 %>"] 

data: [<%= currentUser.datapoint10 %>, <%= currentUser.datapoint11 %>] 

我將如何做到使用EJS標籤來生成圖表的數據? (注意:在生成圖表之前EJS標記信息已經保存到用戶)

回答

4

是的,您可以使用EJS標籤或跨各種不同的view JavaScript框架使用的任何其他類似標籤(例如手柄條,流星,ejs等空間條)。 Chart.js在運行時初始化,所以它不知道數據如何進入文件(例如,它不知道......也不關心......你的JavaScript是預處理和生成的) 。

標籤本身的格式只與您存儲數據的變量有關。我建議將陣列中的labelsdata存儲起來,並使用JSON.stringify()

// defined in your app 
var labels = ['label 1', 'label 2', ...]; 
var data = [datapoint1, datapoint2, ...]; 

// in your EJS file. 
var canvas = document.getElementById('myChart'); 
var data = { 
    labels: <%- JSON.stringify(labels); %>, 
    datasets: [ 
    { 
     label: "My First dataset", 
     backgroundColor: "rgba(255,99,132,0.2)", 
     borderColor: "rgba(255,99,132,1)", 
     borderWidth: 2, 
     hoverBackgroundColor: "rgba(255,99,132,0.4)", 
     hoverBorderColor: "rgba(255,99,132,1)", 
     data: <%- JSON.stringify(data); %>, 
    } 
    ] 
}; 
0

最簡單的方法是在EJS標記中使用JSON.stringify()。你可以做

labels: <%- JSON.stringify(data.labels); %>, 
data: <%- JSON.stringify(data.datasets.data); %> 

它是基於你的data變量。所以,您可能需要相應地調整此代碼。