0

首先,我使用的是带有 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
}
4

1 回答 1

2

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 =>

        @node.name
    

    }

播放!框架:在模板中定义一个变量?

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

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

于 2013-06-03T14:38:19.230 回答