2016-04-28 48 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)]; 
    ...