我在Scala中使用了Play 2框架。
我想在我的Javascript中使用@routes.Assets.at(...)来获得我的资产的路径。但是框架不编译assets目录中的内容。
有可能吗?或者有别的选择吗?
发布于 2015-04-23 09:56:52
我的解决方案:
# in the controller, Scala code
def jsRouterGen = Action {
Ok(
Routes.javascriptRouter("jsRouter")(
routes.javascript.Assets.at // IntelliJ will tell you this is wrong, but it you are right :)
)
).as("text/javascript")
}
# in html template
# add in <head>
<script src='@routes.Application.jsRouterGen'></script>
<!-- other js that needs this router come after -->
# in your js
jsRouter.controllers.Assets.at('/use/it/like/in/html/template');注意这两对:
你想换什么就换什么,但要确保它们符合你的要求。
发布于 2015-04-23 09:57:35
放置在JavaScript目录中的assets文件没有编译,但是视图wchich包括它!因此,可以在包含JS之前声明全局JS,并在JS中使用此var,如:
<script>
var myPathToSomeAction = '@routes.MyController.myAction()';
var someImgPath = '@routes.Assets.at("images/some-img.jpg")';
</script>
<script src='@routes.Assets.at("js/myscript.js")'></script>所以在您的JS中,您可以使用它,例如:
var imgMarkup = '<img src="' + someImgPath + '" alt="" />';https://stackoverflow.com/questions/29812416
复制相似问题