是否有这样做的一个简单的方法?
$(document).ready(function () {
var jsArray = []
@if(scalaList != null) {
@for(id <- scalaList) {
jsArray.push('@id');
}
}
...
}
是否有这样做的一个简单的方法?
$(document).ready(function () {
var jsArray = []
@if(scalaList != null) {
@for(id <- scalaList) {
jsArray.push('@id');
}
}
...
}
这是因为以下简单:
import play.api.libs.json.Json
val jsArr: JsValue = Json.toJson(scalaList)
你也可以做一个模板中:
@(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>
您可以使用mkString这一点。
$(document).ready(function () {
var jsArray = @if(scalaList != null) {
[ @scalaList.mkString(",") ]}
else {[]};
}
你应该鉴于此省略if语句。 取而代之的是,检查控制器空,把空单查看,所以这段代码可以在视图更简单
$(document).ready(function () {
var jsArray = [ @scalaList.mkString(",") ];
}
你不需要这个引号“”周围的ID。 在JavaScript的1 == '1' 是真实的
你有没有尝试过这样的:
var jsArray = new Array(@scalaList.map(x => "\"" + x + "\"").mkString(","));
或者你可以使用一个像字面
var jaArray = [ var jsArray = [@scalaList.map(x => "\"" + x + "\"").mkString(",")];
另外, if
不需要检查。 For
内涵是聪明的像
$(document).ready(function () {
var jsArray = [@scalaList.map(x => "\"" + x + "\"").mkString(",")];
...
}
我认为每一个回答都不错,但仍然不太安全,因为每一个答案,不关心它包括“或”值。幸运的发挥框架支持JSON,所以你应该使用JSON转换为JavaScript数组。
@(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))
}
}