【问题标题】:How to use JavaScript variable as a param on @Messages如何在 @Messages 上使用 JavaScript 变量作为参数
【发布时间】:2017-03-20 20:08:35
【问题描述】:

是否可以在@Messages中使用JS变量作为参数?当我使用它时,我收到以下错误:

未找到:值名称

var name = "some name";
var title = "@Messages("message", name)"

【问题讨论】:

    标签: playframework playframework-2.5


    【解决方案1】:

    这是不可能的,@Messages 在服务器上编译,在客户端编译 javascript。即使您使用某些服务器端 js 引擎预编译它,它也会在 javascript 之前编译。

    这是在客户端计算消息的特殊模块,但我不确定它是否仍然适用于 Play 2.5:

    https://github.com/julienrf/play-jsmessages

    【讨论】:

      【解决方案2】:

      如果您尝试在 JS 代码中使用服务器数据或变量,您可以使用这种方法。在某些情况下,我需要我的 JS 有一个服务器项目列表,所以在我的whatever.scala.html 中,我创建一个脚本标记并从服务器初始化一个 JS 变量,如下所示。

      <script type="text/javascript">
        // get employee data from our server model - it needs to be converted to JSON for JS
        var employeeJsonString = @{Html(new Gson().toJson(model.getEmployeesAsJson()))};
        var employees = JSON.parse(exmployeeJsonString);
        // then you may use employees in JS code...
      </script>

      【讨论】:

        【解决方案3】:

        jsMessages 是一个很好的解决方案。

        如果您想为任何类型的代码提供更通用的解决方案,而不仅仅是消息,您可以试试这个:JavascriptRouting

        它使您能够将 javascript 变量传递给对应用程序中端点的任何调用。但确实,您必须为您的消息设置播放路线。

        【讨论】:

          猜你喜欢
          • 2016-03-12
          • 1970-01-01
          • 1970-01-01
          • 2016-05-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-23
          • 1970-01-01
          • 2017-10-18
          相关资源
          最近更新 更多