2014-07-19 39 views
0

我對Play Framework完全陌生,在前端開發過程中不認爲自己太有才華,所以我在這方面遇到了很多麻煩......從單獨的JS文件訪問Play Framework模板屬性

我希望能夠有一個可以來回更改圖像源的按鈕。這些圖像相當大,所以我想用Javascript預加載圖像,但爲了做到這一點,我必須訪問Assets controller以獲取公開的images目錄中的不同圖像。麻煩的是我試圖保持一切整潔,並試圖在單獨的文件中保留Javascript(在我的情況下我使用Coffeescript)。這裏的問題是,我無法從Coffeescript(或從Java傳遞給模板的任何值)訪問此Assets controller。因此,當我嘗試更改圖像來源時,它只是給了我一個404.

回答

2

Play中有一種方法可以創建一個全局javascript對象,該對象可以訪問控制器的反向路由,包括Assets(如果配置了它)。首先閱讀此頁:

http://www.playframework.com/documentation/2.3.x/ScalaJavascriptRouting

閱讀,請設置您的javascript路線,包括該資源後(見文檔中內嵌的路由器或路由器資源):

routes.javascript.Assets.at 

然後,你就可以在整個javascript中訪問資源如下:

console.log(jsRoutes); 
console.log(jsRoutes.controllers.Assets.at("images/favicon.png").url); 
+0

這很好,謝謝!我在添加鏈接提到的聲明時遇到了一些問題:'(隱式req:RequestHeader)'。但在刪除它之後,它會編譯並完美工作! :) – user2466999

+0

好聽!因爲所有的路由和鏈接都可以是編譯代碼的引用,所以在以後重構變得更加容易。另外還有許多其他很棒的功能。如果您遇到問題,則可以通過StackOverflow問題獲得解答,並查看Play google羣組 - https://groups.google.com/forum/#!forum/play-framework。 – kipsigman