2012-09-19 39 views
1

對於我的公開文件,我通常使用:把javascript變量發揮功能

@routes.Assets.at("data/table.txt") 

在普通的HTML

不過,我有一個變量鏈接一個javascript

var file = "table.txt"//This changes depending on the code 
var link = "data/"+ file; 

而且想運行這樣的jquery功能

$('#mydiv').CSVToTable(@routes.Assets.at(link)) 

但這不起作用。 我的問題

  1. 爲什麼使用@ routes.Assets.at?某種方式更安全嗎?它似乎只是把「資產」放在任何傳遞給它的東西上。是否有一個缺點,只是使用文本「/assets/data/table.txt」
  2. 我將如何傳遞一個javascript變量改成@ routes.Assets.at

在先進的感謝!

回答

2
  1. 當你正在使用你可以切換的資產路線時,它更舒適(誰會客串?:))。在CDN之間更快。如果您要在任何地方放置硬編碼網址,則需要在修改應用的位置時修復所有這些網址。
  2. 有一些可能也與常見的JavaScript,你可以爲一個例子write路由的價值,JS」 someSpecificRoute = '@routes.Assets.at(link)';,比你的腳本中使用它

    $('#mydiv').CSVToTable(someSpecificRoute); 
    

    也許你也可以使用javascriptRoutes但是你會需要決定自己。一般來說,當你計劃使用它們一次或兩次以上時,這是個好主意。

  3. 最後,您可以使用硬編碼路徑和常用的JavaScript技術來發送額外的參數。在這種情況下,我只能建議,出於安全原因,如果您將驗證傳遞的參數是否符合允許的類型和/或範圍,它將是最好的。

+0

感謝您的回覆。我試過: var link =「@ routes.Assets.at(data /」+ dirName +「/」+ fileName +「)」; 和 $('#mydiv')。CSVToTable(link); 但它失敗了......它沒有處理scala代碼,而只是把所有的東西都放在@符號中。我做錯了什麼 – by0