【问题标题】:Output variables to HTML tag in reusable block将变量输出到可重用块中的 HTML 标记
【发布时间】:2013-08-19 12:39:07
【问题描述】:

我有这样一段代码:

@reusableBlock(isAdmin: Boolean, value: String) = @{
    if(isAdmin){
        <a href="/admin/{value}">{value}</a>
    } else {
        <a href="/{value}">{value}</a>
    }
}

如果我传递一些参数:

<h1>@reusableBlock(true, "config")</h1>

我明白了

<a href=localhost:9000/admin/%7Bvalue%7D >config</a> 
instead of <a href=localhost:9000/admin/config >config</a>

您能告诉我如何在可重用块中将变量输出到 HTML 标记。

非常感谢。

======== 编辑 =======

    @renderRoleButton(loggedin: Account, biz: Biz, isAdminPage: Boolean) = @{
    if(loggedin != null) {
        var isManaging = false;
        var roleText = "";
        var bizUsername = biz.username;
        for(role <- loggedin.roles) {
            if(role.restaurant.id == biz.id) {
                isManaging = true;
                roleText = role.role;
            }
        }

        if(isManaging) {
                if(isAdminPage) {       
                    <a href="/{bizUsername}"  class='btn btn-primary'>Preview as normal user {bizUsername}</a>
                } else {
                    <a href='/biz/bizUsername' class="btn btn-primary">Manage as {roleText}</a>
                }

            } else if(!loggedin.likes.contains(biz)) {
                <button type="button" class="btn btn-primary" value="Like">Like</button>
            } else {
                <button type="button" class="btn btn-primary" value="Like">Unlike</button>
            }           
    } else {
        <button type="button" class="btn btn-primary" value="Like">Log in to see good deals</button>
    }
}

<h1>@biz.name @renderRoleButton(loggedin, biz, isAdminPage)</h1>

【问题讨论】:

    标签: html templates web playframework-2.0


    【解决方案1】:

    这应该可行。请注意前两行中@ 字符和@value 位置的更改(如serejja 所述)。

    @reusableBlock(isAdmin: Boolean, value: String) = {
      @if(isAdmin){
        <a href="/admin/@value">@value</a>
      } else {
        <a href="/@value">@value</a>
      }
    }
    

    -编辑-

    由于您需要将其保留为 @{} 块,因此我认为您需要连接字符串来构建所需的 HTML。您只需要更改isAdminPage 检查中的这两行。我认为其他一切都可以保持不变。

    if(isAdminPage){
      Html("<a href=\"/" + bizUsername + "\" class=\"btn btn-primary\">Preview as normal user " + bizUsername + "</a>")
    }
    

    【讨论】:

    • 嗨@estmatic,您的解决方案适用于 HTML 块。但是,由于我希望 scala 块中的一些 scala 变量进行一些条件检查,所以我必须坚持使用 @{}。在我编辑的问题中,我对这个 scala 块非常满意,除了“if(isAdminPage)”检查部分我无法将变量输出到 HTML 标记。感谢您的回答。欣赏!
    • @Kabuky 我更新了我的答案。我认为您需要连接字符串以在 if-else 块中构建所需的 HTML
    【解决方案2】:

    试试这个:

    @reusableBlock(isAdmin: Boolean, value: String) = {
        @if(isAdmin){
            <a href="/admin/@value">@value</a>
        } else {
            <a href="/@value">@value</a>
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-24
      • 2011-12-15
      • 2019-04-10
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      相关资源
      最近更新 更多