在javascript变量中获取play framework对象

在javascript变量中获取play framework对象,javascript,playframework,Javascript,Playframework,我用以下语法在模板参数中声明了一个映射 @(formData : scala.collection.Map[String, scala.List[String]], previousData : scala.collection.Map[String,String], resultList: scala.List[String])(implicit flash: play.api.mvc.Flash) 我想读取previousData映射对象并将其存储在javascript变量中。 实际上,我

我用以下语法在模板参数中声明了一个映射

@(formData : scala.collection.Map[String, scala.List[String]], previousData : scala.collection.Map[String,String], resultList: scala.List[String])(implicit flash: play.api.mvc.Flash)
我想读取previousData映射对象并将其存储在javascript变量中。 实际上,我想通过从map对象获取值来设置textbox中的值。我知道我可以在javascript中使用document.getElementById来设置特定文本框的值。有人能帮忙吗?如果有其他办法,请告诉我。 我尝试了下面的方法,但不起作用

function loadPreviousData()
{
    if(@previousData != null)
    {
         var x = @{previousData.getOrElse("name",null)};
         alert("Name is " +x);
    }
}

是的,你可以使用现在广泛使用的JQuery。假设txtname是文本框的id,那么您可以这样做

$("#txtname").val(x);

这里x是用来提取数据的变量。

我还没有找到直接解决这个问题的方法,但是有一种方法对我有效,所以我正在分享

我使用Json对象而不是映射来解决这个问题。键值格式的所需数据填充在JSON对象中,并使用toString()方法以字符串形式传递该JSON对象

Ok(views.html.serviceReplay.render(formData, resultList.toList, fetchFormDataInJson.toString,newFlash))
在视图部分,这个Json对象是作为字符串获取的

@(formData : scala.collection.Map[String, scala.List[String]], resultList: scala.List[String], previousPageData : String)(implicit flash: play.api.mvc.Flash)
最后,为了在视图部分获取变量,使用了以下指令

var previousDataInJson = JSON.parse('@previousPageData'.replace(/"/g, '"'));
这对我有用。希望它能帮助别人

另外,如果我们想通过Map对象来实现,我也找到了一个解决方案

我无法在javascript代码中直接使用@formData,但它在HTML部分工作,因此我在下面的场景中使用了它

<select name="service" id="service">
                        <option value="">Select Service</option>
                        @for(serviceName <- formData.getOrElse("service",null)) {
                            <option value="@serviceName">@serviceName</option>
                        }
                    </select>

我已经试过了。如果没有play框架,它工作得非常好。但我需要把它作为一个工作模块。首先,您需要通过var info=@Html(json.toJson(previousData.toMap)),将scala映射对象转换为javascript中的json;然后迭代该对象并在文本框中设置值。
var service = $("#service").val();