2016-04-28 21 views
1

我很努力使这项工作。即时通讯实际上使用Chart.js并试图用数据数组填充我的图。 所以我的代码看起来像如何在脚本块中使用玉/帕格条件?

block lower-scripts 
script. 
    var data = { 
     labels : [ 
      each visit in visitstats 
       #{visit.date}, 
     ], 

输出我得到的样子

<script>var data = { 
labels : [ 
    each visit in visitstats 
     04/17/2016, 
], 

,我不认为这是正确的。是否应该将每条语句输出到html输出中?

我试过以下几个问题,但不能得到这个工作。 它看起来不像每个语句都运行。尝试使用 - 使其运行。试图在js前面的管道使其成为例外。没有。 任何人都可以告诉我我哪里出错了?

+0

我通常做这种通过将数组或对象在隐藏输入标签,然后当前端js需要时,我得到这个输入标签的值并解析它。 –

+0

聪明。你有没有一个可以清理并作为答案的例子? – bytejunkie

+0

我也认为应该有可能将它打包到文档准备就绪的页面中。但是我的ajax排版现在还没有达到目标。 – bytejunkie

回答

2

将一个隐藏的输入标签放入您的身体中

body 
    input(type="hidden", id="visit-stats-json", value= JSON.stringify(visitstats)) 

    script. 
    var visitStatsValue = document.getElementById("visit-stats-json"); 
    var visitStatsJSON = JSON.parse(visitStatsValue); 
    var labelsArray = []; 
    for(var i = 0; i < visitStatsJSON.length; i++) 
    { 
     var visit = visitStatsJSON[i]; 
     labelsArray.push(visit.date); 
    }//for 

    var data = { labels: labelsArray }; 

现在你的数据变量应该有你想要的值。

编辑: 我使用完全相同的语法,它的工作原理。请注意,value=之后有空格。如果仍然无法正常工作,你也可以尝试以下的方法来达到同样的效果:

-var visitStatsString = JSON.stringify(visitstats); 
input(type="hidden", id="visit-stats-json", value= visitStatsString) 
+0

迈克,感谢您的全面答复。它正是我需要的。除了事实上我无法让它工作。 JSON.stringify(visitstats)从不吐出任何东西。我是否需要做任何事情来使它运行为js,因为它在html块内?像preprend - 标签? – bytejunkie

+1

感谢您的更新。我确实得到了原始线路的工作,这很好。不知道为什么它不会。 我也必须添加.value到第六行,以便JSON.parse函数实际上可以获取htmlElement包含的对象的内容。 我真的很喜欢你的答案是可扩展性。我只需要添加两条线,我可以排列结果的其他内容,这很棒。 很好的回复,感谢您抽出时间帮助我。 – bytejunkie

+0

谢谢@bytejunkie :)。请标记为答案,如果它为你工作。 –

0

可以使用内联插补:

script. 
    var visitstats = #[JSON.stringify(visitstats)]; 
    ...