【问题标题】:How to convert javascript array to scala List object如何将javascript数组转换为scala List对象
【发布时间】:2015-02-24 03:57:44
【问题描述】:

我继承了一些使用 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;
} 

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

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

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

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

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

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

提前感谢您的帮助。

【问题讨论】:

    标签: javascript json scala playframework


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 谢谢@Sarvesh。这可以解释为什么我无法弄清楚。 :-) 试图避免在服务器端模型上创建一个函数,因为它只会获取相同的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 2011-04-21
    • 2015-11-06
    • 2015-12-10
    • 2014-01-27
    • 2019-09-02
    • 1970-01-01
    相关资源
    最近更新 更多