跳转至

pl-template元件

以可重用的方式显示小胡子模板中的样板 HTML。

样品元素

question.html
<pl-template file-name="templates/outer_template.mustache">
  <pl-variable name="show">True</pl-variable>
  <pl-variable name="section_header">This is the section header.</pl-variable>
  <pl-variable name="section_body">This is the section body.</pl-variable>
</pl-template>

除了元素的示例用法之外,我们还提供了一个示例模板文件。这是文件 templates/outer_template.mustache,存储在课程的serverFilesCourse目录中:

templates/outer_template.mustache
<div class="card mb-1 mt-1">
  <div class="card-header" style="cursor: pointer">
    <div
      class="card-title d-flex justify-content-between"
      data-bs-toggle="collapse"
      data-bs-target="#collapse-{{uuid}}"
    >
      <div>{{section_header}}</div>
      <div class="fa fa-angle-down"></div>
    </div>
  </div>

  <div class="collapse{{#show}} show{{/show}}" id="collapse-{{uuid}}">
    <div class="card-body">
      <div class="card-text">{{{section_body}}}</div>
    </div>
  </div>
</div>

Note

示例元素未定义 uuid 变量,因为每个 pl-template 元素 有一个内部定义的唯一的。

定制

属性 类型 默认 描述
directory "question""clientFilesQuestion""clientFilesCourse""serverFilesCourse""courseExtensions" "serverFilesCourse" 找到 file-name 的父目录。
file-name 字符串 要使用的外部模板的文件名。
log-tag-warnings 布尔 真实 如果呈现的模板包含不能保证正常工作的元素,是否记录警告。
log-variable-warnings 布尔 渲染具有未定义变量的模板时是否记录警告。对于调试很有用。

pl-template 元素内部,可以使用 pl-variable 标签指定用于渲染模板的变量。每个 pl-variable 标签均可用于使用文件中的数据或标签的内容(但不能同时使用两者)来定义变量。请注意,替换应用于 pl-variable 中使用的外部文件(文件按原样使用)。 pl-variable 标签支持以下属性:

属性 类型 默认 描述
directory "question""clientFilesQuestion""clientFilesCourse""serverFilesCourse""courseExtensions" "serverFilesCourse" 找到 file-name 的父目录。
file-name 字符串 从文件中获取变量数据时使用的文件名。
name 字符串 用于分配此标签定义的数据的变量名称。
trim-whitespace 布尔 真实 是否修剪此标签指定的数据的空白。

细节

由于 ZJUI-Learn 中元素的呈现方式,模板应仅包含其他装饰元素。特别是,在此元素中使用的接受和/或评分学生输入的元素将无法正常工作。 渲染模板时,data["params"]data["preferences"] 中的所有条目都作为可用变量包含在内,并且可以在渲染模板时使用 {{params.variable_name}}{{preferences.variable_name}} 语法。 pl-template 元素的每个实例还具有可用于渲染的唯一 uuid 变量。模板也可以在其他模板中使用。

Note

id # CSS 选择器对以数字开头的 id 不起作用,因此 uuid 应该加上前缀(因为它们可能以数字开头)。

示例实现

  • [元素/模板]