0

我正在尝试使用 Qute 模板化我的网页。我有一个主网页模板,该模板包含在页面的特定模板中并从该模板中获取数据。

我的问题是特定模板中给出的数据似乎无法在{#insert val}.... 例如,我的标题和页面内容工作正常,因为它们是常规插入,但我想将列表和标志传递给我的主模板,以便以更动态的方式显示数据:

主页模板:

<!doctype html>
<html lang="en">
<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<!--    <link rel="shortcut icon" href="/res/media/logo.svg"/>-->
    <title>{#insert title}{/} - Open QuarterMaster</title>

    <!-- CSS -->
    <link rel="stylesheet" href="/res/style/bootstrap-adjust.css">
    <link href="/lib/bootstrap/bootstrap-5.1.3-dist/bootswatch.litera.min.css" rel="stylesheet">
    <link rel="stylesheet" href="/lib/fontawesome-free-5.15.4-web/css/all.css">
    <link rel="stylesheet" href="/lib/spin.js/spin.css">
    <link rel="stylesheet" href="/res/css/main.css">
    {#if styleSheets??}
    {#for styleSheet in styleSheets}
    <link rel="stylesheet" href="{styleSheet}">
    {/for}
    {/if}

    <style>
    {#insert pageStyle}/* No page css */ {/}
    </style>
</head>
<body>
<span id="pageInfo" data-page-initted="false" data-auth-type="{config:['service.authMode']}"></span>
<!-- nav here -->
{#if showNavbar}
<!-- TODO:: navbar -->nav
{/if}
<div id="mainContainer" class="container">

    <div id="messageDiv">

    </div>

    <main role="main">
        {#insert pageContent}<h1>No body!</h1>{/}
    </main>

    <hr/>

</div>

<script src="/lib/jquery-3.6.0/jquery.min.js"></script>
<script src="/lib/bootstrap/bootstrap-5.1.3-dist/js/bootstrap.bundle.min.js"></script>
<script src="/lib/js-cookie-3.0.1/js.cookie.min.js"></script>
<script src="/res/js/main.js"></script>
{#if styleSheets??}
{#for script in scripts}
<script src="{script}"></script>
{/for}
{/if}
<script>
{#insert pageScript}{/}
</script>
</body>
</html>

索引页面模板:

{#include webui/mainWebPageTemplate}
{#title}Login{/title}
{#pageStyle}/* ? */{/pageStyle}
{#showNavbar}false{/showNavbar}
{#pageContent}
<h1>
    {config:['service.nameFull']}
</h1>
<ul>
    <li><a href="/openapi-ui/index.html">OpenAPI</a></li>
    <li><a href="/q/health-ui/index.html">Health UI</a></li>
    <li><a href="/q/dev/">Dev UI</a></li>
</ul>


{/pageContent}
{/include}

我看到的一个具体问题是在{#if showNavbar}声明中,该声明目前给出了Entry "showNavbar" not found in the data map in expression {showNavbar}. 我已经看到??语法似乎是如何工作的,但是当值从未真正进入时很难应用。

有任何想法吗?

4

1 回答 1

0

无法定义不引用{#insert}包含模板中的部分的嵌套块。换句话说,您只能{#insert showNavbar}在主页模板中使用。

但是,您可以将showNavbar用作参数,即{#include webui/mainWebPageTemplate showNavbar=true}跳过该{#showNavbar}false{/showNavbar}部分。

于 2021-11-10T07:19:46.850 回答