Переменная в шаблоне scala в игровой среде - PullRequest
4 голосов
/ 06 июля 2011

Мне нужно иметь возможность объявлять переменные, и после некоторой разметки позже я нужно ссылаться на них. Чтобы достичь этого, это упрощенная версия моего шаблона scala:

@(map1: 
java.util.LinkedHashMap[String,java.util.LinkedHashMap[String,Object]]) 
@import scala.collection.JavaConversions._ 
@import play.Logger 
@for( (key,value) <- map1) { 
    <div> 
    @{ 
       val rmap = Foo.someMethod(value) 
       val baz = rmap.getOrElse("baz", null) 
    <table border="0"  cellpadding="0" cellspacing="0"  > 
    <tbody> 
    <tr> 
      <td rowspan="3"> 
        <div class="bar"> 
          @baz 
        </div> 
      </td> 
    </tr> 
    </tbody> 
  </table> 
  } 
  </div> 
} 

Выше допустимого шаблона scala, и если нет, то как я могу объявить baz и ссылаться на это позже в разметке? Я использую 1.2.2RC2 и scala 0.9.1

Ответы [ 2 ]

8 голосов
/ 07 июля 2011

Мне было любопытно, поэтому немного покопался. См. https://groups.google.com/forum/#!topic/play-framework/Mo8hl5I0tBQ - на данный момент пути нет, но показан интересный обходной путь. Определите utils / Let.scala:

package utils
Object Let {
    def let[A,B](a:A)(f:A=>B):B = f(a)
}

, а затем

@import utils.Let._

@let(2+3){ answer =>
   @answer <hr> @answer
}

Это очень функциональный способ обработки, но то, что вы ожидаете в Scala:)

3 голосов
/ 24 мая 2012

Вы можете просто использовать для понимания:

@for( (key,value) <- map1;
     rmap = Foo.someMethod(value);
     baz = rmap.getOrElse("baz", null)
) { 
<div> 
  <table border="0"  cellpadding="0" cellspacing="0"  > 
    <tbody> 
      <tr> 
        <td rowspan="3"> 
          <div class="bar"> 
            @baz 
          </div> 
        </td> 
      </tr> 
    </tbody> 
  </table> 
</div> 
} 

... и если у вас нет ничего, что нужно зациклить, вы можете просто сказать @for(i <- List(1); <declare variables>){<html here>}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...