2014-07-19 36 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