如何使用 v-for 在 Vue.js 中生成描述列表 (dl)?

Ped*_* T. 2 javascript vue.js v-for

毫无疑问,vue 中的 v-for 标签很棒。

我现在有我想要的产生说明列表,如情况。在这种情况下,我需要为数组中的每个元素生成两个DOM 元素:

<dl class="row">
  <dt class="col-sm-3">Description lists</dt>
  <dd class="col-sm-9">A description list is perfect for defining terms.</dd>
Run Code Online (Sandbox Code Playgroud)

有什么(或多或少优雅的)方法可以用 vue 做到这一点?

adi*_*iga 7

您可以使用<template>with 标签v-for来渲染一个包含多个元素的块

new Vue({
  el: "#app",
  data() {
    return {
      items: [
        { short: "1", long: "Long Description 1" },
        { short: "2", long: "Long Description 2" },
        { short: "3", long: "Long Description 3" },
        { short: "4", long: "Long Description 4" },
      ]
    }
  }
})
Run Code Online (Sandbox Code Playgroud)
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">
  <dl class="row">
    <template v-for="data in items">
      <dt class="col-sm-3">{{data.short}}</dt>
      <dd class="col-sm-9">{{data.long}}</dd>
    </template>
  </dl>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 如何提供`key`属性?“模板”无法键入。 (2认同)
  • @HafezDivandari,您可以在`dt`和`dd`元素上设置`key`属性:`&lt;dt :key="data.short"&gt;...&lt;/dt&gt;&lt;dd :key="data.short+' -值'"&gt;...&lt;/dd&gt;` (2认同)

Zac*_*tes 5

HTML5 规范(根据 MDN)允许将元素包装<dt><dd>a 中<div>以用于微数据或样式目的。我推荐以下内容:

<dl class="row">
  <div v-for="item in items" :key="item.id">
    <dt class="col-sm-3">{{ item.key }}</dt>
    <dd class="col-sm-9">{{ item.value }}</dd>
  </div>
</dl>
Run Code Online (Sandbox Code Playgroud)

这也处理 v-for 需要 :key 属性。