使用scala.html时在括号内添加参数值

时间:2018-03-05 08:01:16

标签: javascript html scala

我想添加动态参数值(不确定我是否可以像这样调用它) 到我的scala html中的url。

使用javascript,我首先获得userId,然后将其传递给@ routes.adminController.auth(userId)。

这是我的源代码,

<script type="text/javascript">
function checkboxChecked() {
  var checkbox = $('td > input:checked').length;

  if(checkbox == 1){
    var $checked = $('td > input:checked');
    var userId = $checked.parent().next().text();

    ** I would like to add below and make it work**
   //location.href = @routes.AdmnTask.user_set(userId)

  } else {
    alert("Please select 1 User ID to proceed.")
  }

};
</script>

经过几次尝试后,我注意到我无法设置一些随机变量并将其放入location.href,如下所示。

var link = "@routes.AdmnTask.user_set(userId)"
location.href = link

请问有人帮我解决这个问题吗?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

正如我在评论中所说,你不能在Scala函数中使用Javascript变量,因为Scala是在服务器端和Javascript客户端执行的。

但是,有一种解决方法。

如果您的@routes.AdmnTask.user_set( ... )在最后给出了URL参数,例如http://example.com/userSet/1http://example.com/userSet?id=1,则可以创建一个转换此URL的函数进入一个更通用的:

/**
 * Gets the base URL for a given route
 *
 * @param  url Call - The route called with the parameter 0
 * @return The URL base String.
 */
public static String baseUrl(play.api.mvc.Call url){
    return url.toString().substring(0, url.toString().length() - 1);
}

此函数将切断URL字符串中的最后一个字符,以便您可以在Scala模板中使用它。

然后,您在Scala / Javascript中需要做的就是:

location.href = '@yourClass.baseUrl(routes.AdmnTask.user_set(0))' + userId

编辑:这是上述函数的Scala版本:

def baseUrl(url: play.api.mvc.Call): String = {
  url.toString.substring(0, url.toString.length - 1)
}