2013-03-20 8 views

Antwort

2

Haben Sie so etwas wie versucht:

var jsArray = new Array(@scalaList.map(x => "\"" + x + "\"").mkString(",")); 

oder Sie eine wörtliche wie

var jaArray = [ var jsArray = [@scalaList.map(x => "\"" + x + "\"").mkString(",")]; 

Auch die if Check ist nicht notwendig verwenden können. For Comprehensions sind klug wie die

$(document).ready(function() { 
    var jsArray = [@scalaList.map(x => "\"" + x + "\"").mkString(",")]; 
    ... 
} 
3

Sie mkString dafür verwenden können.

$(document).ready(function() { 
    var jsArray = @if(scalaList != null) { 
     [ @scalaList.mkString(",") ]} 
    else {[]}; 
    } 

Sie sollten diese If-Anweisung in Sicht auslassen. Statt dessen, überprüfen null in Controller und setzen leere Liste anzuzeigen, sodass dieser Code kann mehr einfacher im Blick

$(document).ready(function() { 
    var jsArray = [ @scalaList.mkString(",") ]; 
} 

Sie brauchen nicht diese zitiert ‚‘ um id. In javascript 1 == '1' ist wahr

2

Ich denke, jede Antwort ist gut, aber immer noch nicht sicher, weil jede Antwort nicht Wert, einschließlich 'oder ". Glücklicherweise spielen Framework-Unterstützung json, so sollten Sie Json verwenden ., um JavaScript-Array

@(json: String) 
<html> 
<head> 
</head> 
<body> 
<script> 
var json = @Html(json); 
var list = json.list; 
</script> 
</body> 
</html> 
package controllers 

import play.api._ 
import play.api.libs.json._ 
import play.api.mvc._ 

object Application extends Controller { 

    def index = Action { 
    val list = List("hoge\"hoge", "moge'mo\"ge") 
    val json = Json.stringify(Json.obj( 
     "list" -> JsArray(list.map(JsString(_))) 
    )) 
    Ok(views.html.index(json)) 
    } 

} 
7

Es ist so einfach wie die folgenden zu konvertieren:

import play.api.libs.json.Json 

val jsArr: JsValue = Json.toJson(scalaList) 

Sie auch tun können, dass innerhalb einer Vorlage:

@(list: List[Any]) 

@import play.api.libs.json.Json 

<script type="text/javascript"> 
    $(document).ready(function() { 
     var jsArr = @Json.toJson(list); 
     console.log(jsArr); 
    }); 
</script> 
+0

Ich bekomme die Ausgabe wie folgt: var jsArr = [" xxxx ", " yyyy "]; anstelle von tatsächlichen Anführungszeichen. – binshi

+1

Es sollte @Html sein (Json.stringify (Json.toJson (list))) – Ikrom