首先,我使用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
}
答案 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