【问题标题】:Accessing value by javascript Play Framework/Scala通过 javascript Play Framework/Scala 访问值
【发布时间】:2013-06-03 13:35:57
【问题描述】:

首先我使用的是带有 scala 的 Play 框架。

我正在创建一个图表,我想使用节点 ID 在同一页面上显示一些信息。

为了做到这一点,首先我需要得到node.name,但由于某些原因,@node.name 函数不起作用。在搜索它时,我了解到这是因为 play 是服务器端,而 js 是客户端。但是我需要以某种方式获取数据。

我也无法访问:

var html = "<h4>" + node.name + "</h4><b> connections:</b><ul><li>"

如何通过视图访问它?


我的第二个问题是在到达 js node.name 之后,我需要访问控制器并再次执行相同的操作,但这次使用新的 node.name


查看部分:

onClick: function(node) {
  @node.name
}

【问题讨论】:

    标签: scala playframework


    【解决方案1】:

    1) 这段代码在您的控制器中吗?节点变量是否在范围内?如果是这样,这应该是完全合法的代码,因为它将被评估为纯 scala。

    2) 但是,模板是另一回事。您可能知道他们将所有内容解析为普通 html,除非转义。要使用变量,您必须通过以下任一方式将其纳入范围:

    • 在文件的绝对开头为模板定义一个“构造函数”:

      @(node : Node)

      ...

      @node.name // later in the file

    http://www.playframework.com/documentation/2.0/ScalaTemplates

    • 或者在模板中定义一个变量:

      @defining( Get.node.from.somewhere ) { node =&gt;

          @node.name
      

      }

    Play! framework: define a variable in template?

    如果你做了这两个中的任何一个,你应该没有问题访问node 变量。即使在脚本中。但请注意,外部脚本无法访问相同的变量。因此,如果您需要从 JavaScript 访问变量,则使用内联脚本或将其作为另一个模板导入是很常见的。

    编辑:我对模板、控制器和路由文件做了一个要点:https://gist.github.com/Jegp/5732033

    【讨论】:

    • 1) 此代码在我的视图页面及其 js 中。如何作为另一个模板导入然后访问它?
    • 您可以将 javascript 嵌入到您的 play html-/template-file 中,或者定义一个全新的模板,该模板可以使用普通的 @ 语法包含在内。由于与 HTTP 协议相关的一些神奇的东西,这实际上也是一个很好的网页服务实践。如果您有兴趣,我很乐意告诉您更多信息。
    • 当然,我想学习 okey,这就是我目前所做的。 main.scala 页面: @helper.javascriptRouter("jsRoutes")( routes.javascript.SupertrackController.supertrack(id) ) .--------------- 控制器------------- def javascriptRoutes = Action { 隐式请求 => Ok( Routes.javascriptRouter("jsRoutes")( supertrack(id) ) ).as("text/javascript") }
    • 但实际上在所有示例中我的 id 都有一些问题,没有 id 字段,我不知道如何制作它。
    • 这些幻灯片为 HTTP 性能提供了极好的建议:igvita.com/slides/2013/fluent-perfcourse.pdf
    猜你喜欢
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    相关资源
    最近更新 更多