3

我正在使用 twitter 引导程序作为这样的字段构造函数


    @import helper.twitterBootstrap._
    @implicitFieldConstructor = @{ FieldConstructor(extra.twitterBootstrapInput.f) }

我将如何添加/使用另一个字段构造函数?

谢谢

4

2 回答 2

3

模板中只能有一个,尽管您可以破解它。

首先让我们了解一下代码。您展示的代码创建了一个implicit(名称以 Implicit 开头)fieldConstructor在生成的 Scala 代码中调用的变量。由于它具有类型FieldConstructor (从分配的值自动推断),它将用于FieldConstructor可能需要隐式的地方。

如果你在哪里以类似的方式声明另一个相同类型的 var,Scala 将不知道使用哪个隐式并会引发错误。

也就是说,您可以明确声明FieldConstructor如下:

 @input(field, args:_*)( Htmlcode)(implicitFieldConstructor)

注意第三个参数是明确的。

这应该允许您创建更多的构造函数,如下所示:

 @implicitAnotherFieldConstructor = @{ FieldConstructor(anotherConstructor) }

警告:我现在不能完全测试这个,但考虑到模板的行为方式,这似乎是你唯一的选择。

于 2012-11-27T17:06:02.780 回答
0

我想出解决此问题的另一种方法是在一个字段构造函数中添加 if else 语句,例如在您的表单中:

@inputFile(
     nsForm("plateFiles"),
 '_label -> "Upload files",
 'uploadwidget -> "Select file(s)"
)

并在您的字段构造函数中:

@if(elements.args.contains('uploadwidget)){
    //Do something here
}else{
    //Do something else
}
于 2012-12-01T21:50:09.960 回答