如何在Play Framework中替换Js Global Variables并处理scala变量?

时间:2017-04-05 08:29:02

标签: javascript scala playframework playframework-2.0 google-visualization

我有3个由Java创建的地图变量,它们作为3个Scala变量传递给我的Playframework的scala.html页面。

这个scala.html将它们传递给三个全局Js变量,然后由GoogleCharts(Javascript)解释。

在隔离中使用其中一个全局变量会按预期显示图表,但是两个或三个表示不会显示图表。

我知道全局变量是不好的做法,我可以理解为什么。将这3个scala变量传递给JS的最简单方法是什么?

<head>
...
<script>
window.APP = {sMap: '@sMap'};
</script>
<script type="text/javascript" src="@routes.Assets.at("/public/javascripts", "sChart.js")"></script>
<script>
window.APP = {eMap: '@eMap'};
</script>
<script type="text/javascript" src="@routes.Assets.at("/public/javascripts", "eChart.js")"></script>
<script>
window.APP = {vMap: '@vMap'};
</script>
<script type="text/javascript" src="@routes.Assets.at("/public/javascripts", "vChart.js")"></script>
</head>

其中一个js文件的示例:

function drawChart() {
var sMap = window.APP.sMap;
var data = new google.visualization.DataTable();
data.addColumn('number', 'Count');
var mapString = sMap;
...;

1 个答案:

答案 0 :(得分:0)

当我从函数外部声明全局变量时它起作用(我之前只在函数内部使用它,它只使用一个变量,但是停止使用两个或更多变量)。

我现在看起来像这样:

var sMap = window.APP.sMap;

function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('number', 'Count');
var mapString = sMap;
...;