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

时间:2015-02-23 17:57:15

标签: javascript json scala playframework

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

其中一个javascript函数会发布帖子并获取一个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;
} 

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

我希望/需要使用Play将此文本输入转换为选择下拉列表! @select但@select的选项arg想要一个List对象(或者Map或Seq - 因为我已经有了一个字符串数组,所以只是想象List会更容易。)

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

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

问题是我无法弄清楚如何将myArray数组转换为List对象,然后我可以将其传递给@select选项。

我发现很多帖子都谈到将scala列表转换为数组,但无法找到另一种方法。我希望这是一件容易的事,我似乎无法弄清楚。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

你做不到。更确切地说 - 你不想那样做。

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

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

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

现在,浏览器呈现嵌入了JavaScript的html,从而运行JavaScript。所以...基本上你的JavaScrpt代码在服务器上不存在......对于play而言,所有这些代码都只是文本。

这两个Scala codeJavaScript code都会在不同的时间,不同的计算机和不同的环境中执行,因此您无法做任何您说的话。