【问题标题】:Creating and assigning values to a variable in Scala template在 Scala 模板中创建变量并为其赋值
【发布时间】:2013-12-31 08:33:21
【问题描述】:

我无法从文档中提供的示例中解决此特定情况。

我创建一个结果:

    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>

【问题讨论】:

  • 参见:stackoverflow.com/a/11289347/136363 也许如果您告诉我们您想要实现的目标(即您需要 boolean 的目的),我们可以帮助您找到实现目标的替代途径?跨度>

标签: java scala playframework


【解决方案1】:

我肯定会将此逻辑移动到控制器中以避免意大利面条式代码。否则你可以像这样声明一个新变量:Declare variable in a Play2 scala template

【讨论】:

    【解决方案2】:

    我不能说播放模板,但在常规的 Scala 中,这将是:

    val containsApple = orders.exists(_.name == "apple")
    

    不需要var 或任何其他形式的可怕可变性。

    【讨论】:

    • 控制器方法貌似是用Java写的。
    • 当然...但是控制器不是
    猜你喜欢
    • 2015-02-15
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多