如何将 javascript 数组转换为 Scala List 对象

How to convert javascript array to scala List object

我继承了一些使用 Play!框架,其中包含 scala.html 个文件,其中包含 javascript 个文件。玩!和 scala 对我来说都是新的。

其中一个 javascript 函数执行 post 并取回 JSON 对象。然后循环遍历 JSON 对象并创建一个数组。

var myArray = [];

function createArray(){
   $.post('/createArray', $('#arrayForm').serialize()).done(function( data ) {
       var obj1 = JSON.parse(data);
         $.each(obj1, function(idx, obj) {
             myArray.push(obj.name);
        });   
   });
   return true;
} 

然后它使用这个(字符串)数组创建一个文本输入字段,该字段使用数组中的数据自动完成。

我 want/need 使用播放将此文本输入转换为 select 下拉菜单! @select 但@select 的选项 arg 需要一个 List 对象(或 Map 或 Seq - 只是认为 List 会更容易,因为我已经有了一个字符串数组)。

如果我手动创建 List 对象,它工作正常。

@select(pForm("equipName"), options(scala.collection.immutable.List("Yes","No")))

问题是我不知道如何将 myArray 数组转换为 List 对象,然后我可以将其传递给 @select 选项。

我发现很多 post 都在谈论将 Scala List 转换为数组,但找不到相反的方法。我希望这是一件我似乎无法弄清楚的简单事情。

在此先感谢您的帮助。

你不能那样做。更准确地说 - 你不想那样做。

所以基本上您的播放应用程序 运行 在服务器上。在您的 Play 应用程序中,所有这些 .scala html 文件都被编译以生成一些函数。

现在,当播放应用程序收到来自客户端浏览器的请求时,它会通过路由器映射到某个控制器。控制器进行一些处理,最后采用上述功能之一(假设 index.scala.html 我们得到 views.html.index )并使用一些参数调用此功能。

这些函数 returns 一些 text 然后作为 HTTP 响应发送到客户端的浏览器,响应 header Content-Type:text/html; charset=utf-8 告诉浏览器将此文本视为html.

现在,浏览器呈现嵌入了 JavaScript 的 html,因此 运行 呈现 JavaScript。所以...基本上您的 JavaScrpt 代码在服务器上不存在...因为 play 所有这些都只是文本。

这两个 Scala codeJavaScript code 都在非常不同的时间、在不同的计算机和不同的环境中执行,因此你不能说什么就做什么。