2013-10-23 110 views
1

首先,我对web应用程序开发的全部领域都很陌生,所以请原谅我的问题看起来是否真的很微不足道(我对HTML/JavaScript/CSS/jQuery/AJAX的知识非常有限,但我是想要学习)。带参数的JavascriptRouter方法

我目前正在开发一个Web应用程序,使用 2.2.0和。我需要一个页面上的日历模块,所以经过在网络上的一些研究后,我偶然发现了我在1.6.4版本中使用(或尝试使用)的

现在我遇到的问题是我需要以某种方式传递日历的回调参数让我们可以说我的控制器的dayClick事件。我在网上搜索了如何做到这一点,发现我应该使用游戏提供的javascriptRouter。现在无处不在,每个示例中使用的方法都是无参数的,我似乎无法使用带有参数的控制器方法。

这样的情况下,我不能创建具有参数的方法的反向路线,并通过值的方式或缺少的东西?

如果不可能,从日历传递参数到我的scala控制器方法的最佳方式是什么?

我见过the seemingly popular example of fullcalendar with play on github但使用这些隐藏的形式好像什么东西这么痛,应该是一个在我看来非常简单的任务(我也真的不明白的地方的代码是实际提交这些表格)

我的实现:

object Application extends Controller { 
    def javascriptRoutes = Action { implicit request => 
    import routes.javascript._ 
    Ok(Routes.javascriptRouter("jsRoutes") 
     (routes.javascript.CalendarInteraction.day)).as("text/javascript") 
    } 
} 

在路线:

POST /day/{date}   controllers.CalendarInteraction.day(date: String) 

在CalendarInteraction:

def day(Day: String) = Action { 
    println(Day) //just for testing 
    Ok(views.html.interaction(Day)) //Also just for debugging 
} 

,我试图从这个回调得到的值:

dayClick: function(date, allDay, jsEvent, view) { 
    calendar.fullCalendar('gotoDate', date); 
calendar.fullCalendar('changeView',"agendaDay"); 
$.ajax("/day/"+date); // does not work 
//HOW??? 
} 

回答

0

实验后,我找到了解决我的问题,这是非常简单的,因为它横空出世。

我改变了我的路线:

POST /day/:date    controllers.CalendarInteraction.day(date: String) 

和回调函数:

dayClick: function(date, allDay, jsEvent, view) {    
    calendar.fullCalendar('gotoDate', date); 
    calendar.fullCalendar('changeView',"agendaDay"); 
    jsRoutes.controllers.CalendarInteraction.day(date).ajax(); 
}