【问题标题】:taking play framework object in a javascript variable在 javascript 变量中播放框架对象
【发布时间】:2017-01-24 03:34:49
【问题描述】:

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

@(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 变量中。 我实际上想通过从地图对象中获取值来设置文本框中的值。我知道我可以在 javascript 中使用 document.getElementById 来设置特定文本框的值。有人可以帮忙吗?如果有其他方法可以请告诉我。 我尝试了以下方法,但它不起作用。

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

【问题讨论】:

    标签: javascript playframework


    【解决方案1】:

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

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

    这里的 x 是您从中提取数据的变量。

    【讨论】:

    • 我已经试过了。没有播放框架,它工作得很好。但我需要这个作为一个工作模块。它在那里不起作用。
    • 首先你需要通过这个 var info=@Html(Json.toJson(previousData.toMap)); 将你的scala映射对象转换为javascript中的json。然后迭代该对象并在文本框中设置值。
    【解决方案2】:

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

    我使用 Json 对象而不是 Map 来解决这个问题。将键值格式所需的数据填充到 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>
    

    现在该值已分配给 serviceName,因此,可以使用 JQuery 使用以下语法轻松检索。

    var service = $("#service").val();
    

    【讨论】:

      猜你喜欢
      • 2018-07-16
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多