2013-02-11 1 views
0

Я хотел бы условие Scala внутри «класса» атрибут HTML должен быть проанализирован, но Scala Шаблон не играть в мяч:Scala Template не может tokenise атрибут 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

+0

@Carsten благодарит за ответ, но, к сожалению, добавление знака @ там не помогает. Уступает HTML: class = "priceTag @ {if (amount.toDouble == 0.0d)" FREE "}" –

+0

О, ну, я не видел второй знак '@' в первой строке. * написание ответа * – Carsten

ответ

2

Ваш код имеет несколько ошибок. Они просто скрывают друг друга. :-)

Поедем через них:

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

@{ ... } конструкция означает, что все, что внутри фигурных скобок блок Scala кода. Это не rause ошибки, потому что ваш блок,

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

фактически действует код Scala (из XML-литералов в Scala). Просто 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> 
} 

Обратите внимание на @ признаки до двух if блоков. Я также удалил фигурные скобки вокруг amount.format("¤#") и "FREE". Вы можете сохранить их, конечно, если хотите, но они не требуются.

+0

Большое спасибо за ответ и объяснение. Исправлена ​​моя проблема –

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> 
Смежные вопросы