Play Framework - 在函数中定义我的Javascript文件

时间:2014-01-24 13:22:18

标签: javascript scala playframework playframework-2.0 getscript

我正在使用Play Framework,我正在尝试在另一个javascript文件中的函数中定义一个javascript文件(原因是我不希望这些函数在容器函数之外可用)。

所以我有两个javascripts文件,。/ public / javascripts / main.js,。/ public / javascript / custom.js。

从我的html页面(index.scala.html)我将其定义如下:

  <script src="@routes.Assets.at("javascripts/main.js")"></script>

使用“@routes ....”在main.js中不起作用,所以我尝试添加以下内容:

  $.getScript("public/javascripts/custom.js", function(){
       alert("Script loaded and executed.");
    });

我尝试过各种各样的路径,但总是说它无法找到它。

请知道如何在Play中执行此操作?我尽可能多地查看文档,没有任何内容......

任何帮助都会很棒!

谢谢。

亲切的问候,

Gary Shergill

2 个答案:

答案 0 :(得分:4)

确保路线文件中包含以下声明:

# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file               controllers.Assets.at(path="/public", file)

然后以下内容应该有效:

$.getScript("/assets/javascripts/custom.js", function(){
   alert("Script loaded and executed.");
});

答案 1 :(得分:1)

尝试使用Javascript路由机制。如上所述here

定义javascriptRoutes

  import play.api.mvc._
  object Application extends Controller {

    def javascriptRoutes = Action { implicit request =>
      import routes.javascript._
      Ok(
        Routes.javascriptRouter("jsRoutes")(
           javascript.Assets.at     
        )
      ).as("text/javascript")
    }
  }

更新您的.routes文件

   GET  /routes   controllers.Application.javascriptRoutes

将其包含在页面中:

<script type="text/javascript" src="@routes.Application.javascriptRoutes"></script>

然后在javascript中使用jsRoutes变量:

$.getScript(jsRoutes.controllers.Assets.at('javascripts/custom.js').url, function(){
    alert("Script loaded and executed.");
});