首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Twirl:带有可选内容的标记/视图

Twirl:带有可选内容的标记/视图
EN

Stack Overflow用户
提问于 2014-11-08 17:35:09
回答 1查看 689关注 0票数 0

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

app/views/tags/part.scala.html

代码语言:javascript
复制
@(param: String)(content: Html = null)

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

我想用它来表达我的观点:

代码语言:javascript
复制
@tags.part("foo"){ <b>Good!</b} }

代码语言:javascript
复制
@tags.part("bar")

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

方法的缺失参数适用于对象部分; 如果您想将此方法作为一个部分应用的函数来处理,请使用`_‘

如何在不使用@tags.part("bar"){ }@tags.part("bar"){_} (并签入标记if body != "_")的情况下传递它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-09 21:38:33

你的电话:

代码语言:javascript
复制
@tags.part("bar")

是curry调用-它返回函数应用-而不是对象。

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

代码语言:javascript
复制
@tags.part("bar")()

如果你想打电话:

代码语言:javascript
复制
@tags.part("bar")

你应该定义

代码语言:javascript
复制
@(param: String)(implicit content: Html) 

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

代码语言:javascript
复制
@(param: String,content: Html = null)
  • 但你必须打电话:

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

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

代码语言:javascript
复制
@good = {<b>Good!</b>}

@tags.part("foo")(good)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26820059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档