首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Play框架和javascript资产路由器

问Play框架和javascript资产路由器
EN

Stack Overflow用户
提问于 2015-04-23 02:14:17
回答 2查看 137关注 0票数 0

我在Scala中使用了Play 2框架。

我想在我的Javascript中使用@routes.Assets.at(...)来获得我的资产的路径。但是框架不编译assets目录中的内容。

有可能吗?或者有别的选择吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-23 09:56:52

我的解决方案:

代码语言:javascript
复制
# 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');

注意这两对:

  • jsRouterGen:这定义了js路由器代码
  • jsRouter:它是您将在js代码中使用的路由器的名称。

你想换什么就换什么,但要确保它们符合你的要求。

票数 1
EN

Stack Overflow用户

发布于 2015-04-23 09:57:35

放置在JavaScript目录中的assets文件没有编译,但是视图wchich包括它!因此,可以在包含JS之前声明全局JS,并在JS中使用此var,如:

代码语言:javascript
复制
<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中,您可以使用它,例如:

代码语言:javascript
复制
 var imgMarkup = '<img src="' + someImgPath + '" alt="" />';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29812416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档