0

我有3個由Java創建的地圖變量,它們作爲3個Scala變量傳遞到我的Playframework的scala.html頁面。如何替換Js全局變量並處理Play框架中的scala變量?

此scala.html將它們傳遞給三個全局Js變量,然後由GoogleCharts(Javascript)進行解釋。

單獨使用其中一個全局變量會按預期顯示一個圖表,但兩個或三個表示不會顯示圖形。

我知道全局變量是不好的做法,我可以明白爲什麼。將這3個scala變量傳遞給JS最簡單的方法是什麼?

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

例子:

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

回答

0

當我從函數外部聲明全局變量它的工作原理(我有它之前的功能,做工作,只是一個內部變量,但停止與兩個或更多的工作)。

我現在看起來是這樣的:

var sMap = window.APP.sMap; 

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