Play框架2.x Scala模板中的内联变量

use*_*870 5 scala playframework playframework-2.0

如何在Play框架2.x Scala模板中创建内联变量?Play的指南中的路径对我来说并不清楚:

@defining(user.firstName + " " + user.lastName) { fullName =>
  <div>Hello @fullName</div>
}
Run Code Online (Sandbox Code Playgroud)

Far*_*mor 10

首先,您不创建变量,而是创建一个只读它的.

在您的示例中,您创建了一个fullName可在大括号内访问的值.

@defining("Farmor") { fullName =>
  <div>Hello @fullName</div>
}
Run Code Online (Sandbox Code Playgroud)

将打印Hello Farmor

要定义一个可在模板中全局访问的值,只需使用大括号包含所有内容即可.

例如

@defining("Value") { formId =>
  @main("Title") {
    @form(routes.Application.addPost, 'id -> formId) {
      @inputText(name = "content", required = true)
      <input type="submit" value="Create">
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在示例中,您可以使用formIdanywere 值.

  • 丑陋,令人费解!....所有的速度/自由标记努力使视图真正干净,HTML编码器友好.现在看来,时尚界让html的观点一团糟*感叹* (10认同)

Oli*_*ain 9

如果您不想使用@defining语法,则可以定义reusable block每次使用时将评估的语法:

@fullName = @{
  user.firstName + " " + user.lastName
}

<div>Hello @fullName</div>
Run Code Online (Sandbox Code Playgroud)

使用相同的语法,您还可以将参数传递给块:https: //github.com/playframework/Play20/blob/master/samples/scala/computer-database/app/views/list.scala.html