2017-05-16 4 views
2

Als ich versucht habe, eine Liste an die Vorlage zu übergeben, habe ich einen Fehler bekommen.Wie int Array mit Javascript in Play Framework Vorlage erhalten?

Die Liste wird definiert wie:

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

Nun werden die Daten von myList ist:

[{First Try = [1,0,0,1], Second Try = [1,1 , 2,2]}, {}]

Ich benutze chart.js, um ein Diagramm anzuzeigen, und so brauche ich eine int [] als Datenliste.

meiner Sicht:

@(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 
     }] 
    } 
} 

Aber ich habe Fehler, wenn ich versuche, die Liste Querung

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

Ich weiß, wann mit

direkt Ausgabe-Array (Die Fehlerzeile mit Chrome Debug gezeigt)
System.out.println(array); 

In Java wird es mit der Zeichenfolge wie [I @ 6e37161d passieren, aber ich weiß nicht, wie ich damit umgehen soll javascript.Wie kann ich dieses Array verwenden? Ich werde dankbar sein, wenn jemand helfen kann.

Vielen Dank.

Antwort

2

Sie können das Java-Objekt nicht direkt in eine Javascript-Variable konvertieren, wie Sie es gerade versuchen.

var list = @myList; 

Das ist nur myList.toString() nimmt und versucht, das als wörtliche Javascript-Variable zu setzen. Sie müssen zuerst Ihr Java-Objekt zu JSON serialisieren, dann können Sie parse the JSON in Javascript. So wie:

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

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

Vielen Dank! Jetzt funktioniert es. – Jane

Verwandte Themen