我无法从文档中提供的示例中解决此特定情况。
我创建了一个结果:
Customer customer = new Customer("James");
Order[] orders = new Order[2];
orders[0] = new Order("Apple");
orders[1] = new Order("Orange");
Content html = views.html.template.render(customer, orders);
return ok(html);
我的模板是:
@(customer: Customer, orders: Array[Order])
<h1>Welcome @customer.name!</h1>
<ul>
@for(order <- orders) {
<li>@order.name</li>
}
</ul>
现在我想在模板中添加一个布尔变量,然后遍历订单,如果Apple出现在订单中,我想将创建的变量设置为true。
基本上我需要一个在整个模板中都有范围的var。
谢谢。
添加了一些伪代码。
@(customer: Customer, orders: Array[Order])
<h1>Welcome @customer.name!</h1>
**** var containsApple = false;
<ul>
@for(order <- orders) {
<li>@order.name</li>
**** if order.name == "apple"
**** containsApple = true;
}
</ul>
答案 0 :(得分:3)
我肯定会将此逻辑移到控制器中以避免意大利面条代码。否则,您可以声明一个新的变量:Declare variable in a Play2 scala template
答案 1 :(得分:2)
我不能代表播放模板,但在常规的Scala中,这将是:
val containsApple = orders.exists(_.name == "apple")
不需要var
或任何其他形式的可怕的可变性。