2017-05-16 33 views
2

當我試圖將一個列表傳遞給模板時,出現錯誤。如何在播放框架模板中使用javascript獲取int數組?

列表的定義如下:

myList: List<Map<String,int[]>> 

myList中的現在的數據:

[{第一次嘗試= [1,0,0,1],第二次嘗試= [1,1 ,2,2]},{}]

我使用chart.js來顯示圖表,所以我需要一個int []作爲數據列表。

我的觀點:

@(myList: List[Map[String,Array[Int]]]) 

var list = @myList; 
for(var i=0;i<list.length;i++){ 
    var map = list[i]; 
    for(var key in map){ 
     myFunction(key,map[key]); 
    } 
} 

myFunction(string,array){ 
//I want directly use the array to the chart’s datasets 
//others 

var myChart = new Chart(chartid, { 
    type: 'bar', 
    data: { 
     labels: [「a」, 「b", 「c」, 」s」], 
     datasets: [{ 
      data: array 
     }] 
    } 
} 

但我得到的錯誤,當我嘗試遍歷目錄

var out = [{First Try=[[email protected], Second Try=[[email protected]}, {}]; 
// 「Uncaught SyntaxError: Invalid or unexpected token」. 

(使用Chrome調試中顯示的錯誤行),我知道什麼時候有

直接輸出數組
System.out.println(array); 

在java中它會發生像[I @ 6e37161d這樣的字符串,但我不知道如何處理它javascript.How可以使用這個數組嗎?如果有人能幫忙,我將不勝感激。

非常感謝。

回答

2

您不能將Java對象直接轉換爲您試圖執行的Javascript變量。

var list = @myList; 

這隻需要myList.toString()並嘗試將其設置爲文字的Javascript變量。您需要先將您的Java對象序列化爲JSON,然後您可以parse the JSON in Javascript。像這樣:

// Java controller code 
String myListJson = Json.stringify(Json.toJson(myList)); 

// Template 
@(myListJson: String) 
var list = JSON.parse("@myListJson"); 
+0

非常感謝!現在它可以工作。 – Jane