2013-02-11 101 views
0

我想在「類」 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) &quot;FREE&quot;}"> 
    £1 
</div> 

,我會喜歡它,以產生:

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

建議感激理解

+1

看起來你錯過了一些'@'符號('@ {if ...}')。我很驚訝div的內容是'1英鎊'而不是整個'if'行。 – Carsten 2013-02-11 23:20:12

+0

@Carsten感謝您的回覆,但不幸的是,在那裏添加@符號並沒有幫助。產量HTML:class =「priceTag @ {if(amount.toDouble == 0.0d)」FREE「}」 – 2013-02-12 12:07:01

+0

哦,對,我沒有看到第一行中的第二個「@」符號。 *寫一個答案* – Carsten 2013-02-12 16:09:06

回答

2

你的代碼中有幾個錯誤。他們只是互相隱瞞。 :-)

讓我們通過他們:

@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

0

我在斯卡拉初學者,但如果聲明是不正確的,我會去的:

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

或者:

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