Qute- 使用#if 等中包含的数据
Qute- Use data included in #if, etc
我正在尝试使用 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}
。我已经看到 ??
语法似乎是如何工作的,但是当值从未真正进入时很难应用。
有什么想法吗?
无法定义不引用包含模板中的 {#insert}
部分的嵌套块。换句话说,您只能在主页模板中使用{#insert showNavbar}
。
但是,您可以使用 showNavbar
作为参数,即 {#include webui/mainWebPageTemplate showNavbar=true}
并跳过 {#showNavbar}false{/showNavbar}
部分。
我正在尝试使用 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}
。我已经看到 ??
语法似乎是如何工作的,但是当值从未真正进入时很难应用。
有什么想法吗?
无法定义不引用包含模板中的 {#insert}
部分的嵌套块。换句话说,您只能在主页模板中使用{#insert showNavbar}
。
但是,您可以使用 showNavbar
作为参数,即 {#include webui/mainWebPageTemplate showNavbar=true}
并跳过 {#showNavbar}false{/showNavbar}
部分。