2016-08-22 65 views
0

我在我的应用程序中有一个好奇的问题,当我使用Play Framework的的。这就是问题所在:Javascript路由在播放框架不工作

Screenshot

,这是我的代码:

class Application extends Controller { 

     import play.api.mvc._ 
     import play.api.routing._ 

     def javascriptRoutes = Action { implicit request => 
     Ok(
      JavaScriptReverseRouter("jsRoutes")(routes.javascript.ProcessController.retrieveAllProcess) 
     ).as("text/javascript") 
     } 
    } 

这是MUY路由文件:

GET /javascriptRoutes controllers.Application.javascriptRoutes 
    GET /Process/All  controllers.ProcessController.retrieveAllProcess 

这是html.scala文件:

var option = 
     { "url" : @routes.javascript.ProcessController.retrieveAllProcess, 
     ... 
     } 

非常感谢你:)。

回答

1

我认为你很困惑JavaScript路由与反向路由。

Javascript路由

Javascript路由是为了生成JavaScript代码。生成的代码定义了可以在您的JavaScript中用于在客户端生成URL的函数。既然你已经定义了一个Action返回生成的代码,你可以通过使用

<script type="text/javascript" src="@routes.Application.retrieveAllProcess()"></script> 

注意,这里使用反向路由判断哪些URL应该用于该脚本的HTML页面,它包含在你的页面。 :)

然后,在JavaScript代码它可以用于像这样

var retrieveAllProcessRoute = jsRoutes.controllers.Application.retrieveAllProcess() 

以产生含有两个HTTP动词和url到Application::retrieveAllProcess方法javascript对象。

反向路由

反向路由用于生成scala代码。此代码旨在生成视图中的URL或Redirects到服务器端的控制器方法。

由于您在谈论模板(*.html.scala),因此您正在讨论事物的服务器端。这意味着您应该使用Play的反向路由功能。下面我已经重写了您的JavaScript模板片段以使用反向路由:

var option = { 
    "url": @routes.Application.retrieveAllProcess, 
    ... 
}