Scala模板无法标记HTML属性?
问题描述:
我想在“类” HTML属性中Scala的条件进行分析,而Scala的模板是不是在玩球:Scala模板无法标记HTML属性?
@priceTag(amount: Currency) = @{
<div class='priceTag {if(amount.toDouble == 0.0d) "FREE"}'>
{if(amount.toDouble > 0.0d) {amount.format("¤#")} else {"FREE"}}
</div>
}
产量:
<div class="priceTag {if(amount.toDouble == 0.0d) "FREE"}">
£1
</div>
,我会喜欢它,以产生:
<div class="priceTag">
£1
</div>
建议感激理解
答
你的代码中有几个错误。他们只是互相隐瞒。 :-)
让我们通过他们:
@priceTag(amount: Currency) = @{ ... }
的@{ ... }
结构意味着花括号内的一切是Scala代码块。这不会错误的,因为你的块,
<div class='priceTag {if(amount.toDouble == 0.0d) "FREE"}'>
{if(amount.toDouble > 0.0d) {amount.format("¤#")} else {"FREE"}}
</div>
实际上是有效的斯卡拉代码(因为斯卡拉的XML文字)。这只是斯卡拉承认priceTag {if(amount.toDouble == 0.0d) "FREE"}
作为您div
的类名称。
什么你可能想要做的是这样的:
@priceTag(amount: Currency) = {
<div class='priceTag @{if(amount.toDouble == 0.0d) "FREE"}'>
@{if(amount.toDouble > 0.0d) amount.format("¤#") else "FREE"}
</div>
}
注意两个if
块之前的@
迹象。我还删除了围绕amount.format("¤#")
和"FREE"
的大括号。如果你愿意,你可以保留它们,但它们不是必需的。
+0
非常感谢您的答复和解释。完美解决了我的问题 – 2013-02-12 18:19:30
答
我在斯卡拉初学者,但如果声明是不正确的,我会去的:
@if(amount > 0) {
<div class="priceTag">
@amount
</div>
} else {
<div class="priceTag FREE">
@amount
</div>
}
或者:
<div class="priceTag @if(amount == 0) { FREE }">
@amount
</div>
看起来你错过了一些'@'符号('@ {if ...}')。我很惊讶div的内容是'1英镑'而不是整个'if'行。 – Carsten 2013-02-11 23:20:12
@Carsten感谢您的回复,但不幸的是,在那里添加@符号并没有帮助。产量HTML:class =“priceTag @ {if(amount.toDouble == 0.0d)”FREE“}” – 2013-02-12 12:07:01
哦,对,我没有看到第一行中的第二个“@”符号。 *写一个答案* – Carsten 2013-02-12 16:09:06