使用vue.js在一个v-for中重复2个元素

am0*_*mhz 6 vue.js vuejs2

有没有一种方法可以重复2个元素,而一个元素v-for没有多余的元素/容器?

我想要实现的是这样的:

table{
  border-collapse: collapse;
}

td{
  border: 1px solid #999;
}
Run Code Online (Sandbox Code Playgroud)
<table>
  <tr><td rowspan="2">itteration 1</td><td>value 1</td></tr>
  <tr><td>value 2</td></tr>
  <tr><td rowspan="2">itteration 2</td><td>value 1</td></tr>
  <tr><td>value 2</td></tr>
  <tr><td rowspan="2">itteration 3</td><td>value 1</td></tr>
  <tr><td>value 2</td></tr>
  <tr><td rowspan="2">and so on</td><td>value 1</td></tr>
  <tr><td>value 2</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)

如果我使用如下代码

<tr v-for="(i, k) in items" :key="k">
  <td rowspan="2">itteration {{ k + 1 }}</td>
  <td>value 1</td>
</tr>
<tr v-for="(i, k) in items" :key="k">
  <td>value 2</td>
</tr>
Run Code Online (Sandbox Code Playgroud)

我得到这样的结果

<tr v-for="(i, k) in items" :key="k">
  <td rowspan="2">itteration {{ k + 1 }}</td>
  <td>value 1</td>
</tr>
<tr v-for="(i, k) in items" :key="k">
  <td>value 2</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
table{
  border-collapse: collapse;
}

td{
  border: 1px solid #999;
}
Run Code Online (Sandbox Code Playgroud)

当然我可以使用这样的代码

<tbody v-for="(i, k) in items" :key="k">
  <tr>
    <td rowspan="2">itteration {{ k + 1 }}</td>
    <td>value 1</td>
  </tr>
  <tr>
    <td>value 2</td>
  </tr>
</tbody>
Run Code Online (Sandbox Code Playgroud)

但我想尽可能避免这种情况。

有任何想法吗?

Tom*_*ech 7

您可以将<template>元素与一起使用v-for,其中可以包含多个子元素:

new Vue({
  el: '#root',
  data() {
    return {
      items: ["foo", "bar", "baz"]
    }
  }
});
Run Code Online (Sandbox Code Playgroud)
table {
  border-collapse: collapse;
}

td {
  border: 1px solid #999;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.min.js"></script>

<div id="root">
  <table>
    <template v-for="(i, k) in items">
      <tr>
        <td rowspan="2">iteration {{ k + 1 }}</td>
        <td>value 1</td>
      </tr>
      <tr>
        <td>value 2</td>
      </tr>
    </template>
  </table>
</div>
Run Code Online (Sandbox Code Playgroud)