0

我想要解析“类”HTML属性中的Scala条件,但Scala模板没有发挥作用:

@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) &quot;FREE&quot;}"> 
    £1
</div>

我希望它产生:

<div class="priceTag"> 
    £1
</div>

建议感激不尽

4

2 回答 2

2

您的代码有几个错误。他们只是互相隐藏。:-)

让我们来看看它们:

@priceTag(amount: Currency) = @{ ... }

@{ ... }结构意味着大括号内的所有内容都是一段 Scala 代码。这不会引发错误,因为你的块,

<div class='priceTag {if(amount.toDouble == 0.0d) "FREE"}'>
    {if(amount.toDouble > 0.0d) {amount.format("¤#")} else {"FREE"}}
</div>

实际上是有效的 Scala 代码(因为 Scala 的 XML 文字)。只是 Scala 将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>
}

注意两个街区@前的标志。我还删除了andif周围的大括号。当然,如果你愿意,你可以保留它们,但它们不是必需的。amount.format("¤#")"FREE"

于 2013-02-12T16:20:21.977 回答
0

我是 scala 的初学者,但 if 语句对我来说不正确,我会选择:

@if(amount > 0) {
        <div class="priceTag"> 
           @amount
        </div>
} else {
        <div class="priceTag FREE"> 
           @amount
        </div>
}

或者:

        <div class="priceTag @if(amount == 0) { FREE }"> 
           @amount
        </div>
于 2013-02-12T10:39:40.537 回答