通过javascript Play Framework / Scala访问价值

时间:2013-06-03 13:35:58

标签: scala playframework

首先,我使用scala的Play框架。

我正在创建一个图表,并且我想在同一页面上显示节点ID。

为了做到这一点,首先我需要获得node.name但由于某些原因@node.name功能无法正常工作。在搜索时我了解到这是因为游戏是服务器端而js是客户端。但是我需要以某种方式获取数据。

我也无法访问:

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

如何通过视图访问此内容?


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


查看部分:

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

1 个答案:

答案 0 :(得分: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
    

    }

请参阅Play! framework: define a variable in template?

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

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