0

「class」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 リテラルのため)。priceTag {if(amount.toDouble == 0.0d) "FREE"}Scalaがあなたのクラス名として認識するだけですdiv

おそらくやりたかったことはこれです:

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

2 つのブロック@の前にある標識に注意してください。とifを囲む中括弧も削除しました。もちろん、必要に応じて保持することもできますが、必須ではありません。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 に答える