vue.js v-for在两个表行上

mwyxok5s  于 2022-12-14  发布在  Vue.js
关注(0)|答案(4)|浏览(233)

Vue 2,没有webpack。我想一次渲染两个trs,主要和详细的可扩展行。这是我试图实现的:

<table>
   <tbody>
     <div v-for="item in items">
         <tr></tr>
         <tr class="detail-row"></tr>
     </div>
   </tbody>
</table>

问题是<div>是tbody的一个无效子元素,如何在每次for循环迭代时呈现两个<tr>

uujelgoq

uujelgoq1#

这是在支持template的浏览器中解决问题的方法。

<table>
   <tbody>
     <template v-for="item in items">
         <tr></tr>
         <tr class="detail-row"></tr>
     </template>
   </tbody>
</table>

如果您需要支持 * 不 * 支持template的浏览器,我通常会求助于render函数。
下面是这两种情况的一个工作示例。
第一个

0sgqnhkj

0sgqnhkj2#

在更新版本的VueJS中,它需要一个索引。

<table>
    <tbody>
      <template v-for="(item, index) in items">
        <tr :key="index">
           <td>{{item.master}}</td>
        </tr>
        <tr :key="index" class="detail-row">
           <td>{{item.detail}}</td>
        </tr>
      </template>
    </tbody>
  </table>
jhdbpxl9

jhdbpxl93#

如果你想在double中使用标记.或者想在模板div中使用一个单独的组件在table内的tr标记(就像在一个新的组件中一样)你可以使用style=“display:contents”以保持表格行彼此内联。
Vue组件

<table> 
<template v-for="v-for="(price, index) in prices">
<div :key="price.id"  style="display: contents">
<tr><td>{{price.id}}</td><td>{{price.name}}</td></tr>
<tr col-span="2">{{price.desc}}</tr>
</div>
</template>
</table>

或者,如果要对行使用单独的组件
Table.vue

<template>
<div>
<table class="table">
<thead>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
</thead>
<tbody>
<template v-for="item in items">
<my-component :item=“item”/>
</template>
</tbody>
</table>
</div>
</template>

my-component.vue

<template>
<div style="display: contents">
<tr>
<td>{{item.firstname}}</td>
<td>{{item.lastname}}</td>
</tr>
<tr>
<td colspan="2" >
{{item.description}}
</td>
</tr>
</div>
</template>
2nc8po8w

2nc8po8w4#

不使用显示器:如果您想将行链接在一起,可以使用display: table-row-group类型

<table>
    <div v-for="v-for="(price, index) in prices"
           v-bind:key="price.id" 
           style="display: table-row-group">
        <tr>
            <td>{{price.id}}</td><td>{{price.name}}</td>
        </tr>
        <tr col-span="2">
            {{price.desc}}
        </tr>
    </div>
</table>

相关问题