我正在使用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
答案 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.");
});