0

我想创建一个带有可选内容的标签......假设我有一个标签:

app/views/tags/part.scala.html

@(param: String)(content: Html = null)

@if(content == null) {
    @param: Your tag has no content...
} else {
    @param: @content
}

我想在我的观点中使用它:

@tags.part("foo"){ <b>Good!</b} }

或者

@tags.part("bar")

不幸的是,第二次调用给了我编译错误:

缺少方法的参数适用于对象部分;

如果您想将其视为部分应用的函数,请使用 `_' 遵循此方法

如何在不使用@tags.part("bar"){ } or @tags.part("bar"){_}(并签入 tag if body != "_")的情况下通过它?

4

1 回答 1

1

你的来电:

@tags.part("bar")

是咖喱调用 - 它返回函数应用 - 不是对象。

您的代码的解决方案是调用应用函数:

@tags.part("bar")()

如果你想打电话:

@tags.part("bar")

你应该定义

@(param: String)(implicit content: Html) 

并在上下文中定义隐式 Html,或定义为

@(param: String,content: Html = null)
  • 但是你必须打电话:

@tags.part("foo")(Html("<b>Good!</b>"))- 什么是容易出错的。

最后一个解决方案的解决方法是创建方法并调用它:

@good = {<b>Good!</b>}

@tags.part("foo")(good)
于 2014-11-09T21:38:33.010 回答