2

我正在为我的网站使用 Scala Play Framework 2.1。我希望能够将数组或列表传递给客户端代码,以便在页面加载后进行后续处理。该列表本质上是一堆稍后从服务器请求的东西。我的目的是让网页在数据进入时显示数据。

模板中的以下代码有效,但感觉很笨拙。有一个更好的方法吗?

<script>
    var items = [ @results.map{ res =>
        "@res.item",
    } ""]
</script>

这是我最终想要在客户端做的事情:

for (var i = 0; i < items.length; i++)
{
  var item = items[i]

  jQuery.ajaxQueue({
    url: "/dataJson",
    data: {item : item}
  }).done(function( data ) {
    addColumn(data)
  });

}

4

2 回答 2

2

假设这results.map(_.item)是一个字符串列表:

@import play.api.libs.json._

<script>
    var items = @Html(Json.toJson(results.map(_.item)).toString);
</script>

//result: var items = ["a","b","c"];
于 2013-06-28T16:36:09.643 回答
1

我使用了类似的东西:

<script>
  var items = new Array();
  @for((result: String, index) <- results.zipWithIndex) {
    items[@index] = "@result";
  }
</script>

但我同意这有点笨拙,特别是当你需要逃避特殊字符时......

// Multiline js escape can be done this way:
.replaceAll("\n", "\\\\\n")
于 2013-06-28T10:36:23.807 回答