循环在vue js中像在php foreach中获取html表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了循环在vue js中像在php foreach中获取html表相关的知识,希望对你有一定的参考价值。

我有这样的对象数组

types:[
    { name:"Twin/Double", rooms:[{id:4}, {id:5}] },
    { name:"Twin/Double", rooms:[{id:2}, {id:3}] },
    { name:"Twin/Double", rooms:[{id:6}, {id:7}] },
];

所以我想在vue.js中循环它们,就像在表格中的php foreach循环一样,得到这样的结果。

PHP循环。

<table v-for="type in rooms">
   <tbody>
      @foreach($types as $type)
        <tr>
           <td>{{ type->name }}</td>
        </tr>
        @foreach($type->rooms as $room)
             <tr>{{ $room->id }}
        @endforeach
      @endforeach
   </tbody>
</table>

但是在vue.js v-for指令中,我不能这样做,我尝试这样的事情。

Vue循环。

<tbody>
   <div v-for="type in rooms">
      <tr>
        <td>{{ type.name }}</td>
      </tr>
      <tr v-for="room in type.rooms">{{ room.id }}</tr>
   </div>
</tbody>

但是我的桌子结构已经破了。我想得到完全像这样的结构。

html表结果

<tbody>
    <tr>
        <td>Twin/Double</td>
    </tr> 
    <tr>
        <td>Room - 4</td>
    </tr>
    <tr>
        <td>Room - 5</td>
    </tr>

    <tr>
        <td>Triple</td>
    </tr> 
    <tr>
        <td>Room - 2</td>
    </tr>
    <tr>
        <td>Room - 3</td>
    </tr>

    <tr>
        <td>Family</td>
    </tr>
    <tr>
        <td>Room - 6</td>
    </tr>
    <tr>
        <td>Room - 7</td>
    </tr>

视觉效果必须像这样.enter image description here

请帮我

答案

所以看起来Vamsi在技术上已经给出了解决方案,但标记需要在房间ID周围额外加上<td></td>

<template>
  <table>
    <tbody>
     <template v-for="type in types">
        <tr>
          <td>{{ type.name }}</td>
        </tr>
       <tr v-for="room in type.rooms">
         <td>Room - {{ room.id }}</td>
       </tr>
     </template>
    </tbody>
  </table>
</template>

<script>
  export default {
    data() {
      return {
        types:[
          { name:"Twin/Double", rooms:[{id:4}, {id:5}] },
          { name:"Triple", rooms:[{id:2}, {id:3}] },
          { name:"Family", rooms:[{id:6}, {id:7}] },
        ]
      }
    }
  }
</script>

<style>
  tr, td {
    border: 1px solid #ddd;
    padding: 1.314em;
  }
</style>

See Image

另一答案

只需使用<template>标记而不是<div>进行循环,以便不破坏表结构:

<tbody>
   <template v-for="type in rooms">
      <tr>
        <td>{{ type.name }}</td>
      </tr>
      <tr v-for="room in type.rooms">{{ room.id }}</tr>
   </template>
</tbody> 

<template>标签不会被渲染,但它的子节点将被渲染。您可以将<template>标记视为占位符

以上是关于循环在vue js中像在php foreach中获取html表的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中像在 Java 中一样使用套接字

如何在 Android 中像在 Google 地图中一样获得持续的位置更新?

如何使 CSS 属性动画在 Safari 中像在 Google Chrome 中一样工作?

php 如何退出foreach 循环

如何在 vue.js 2 上循环对象观察者?

如何在 Vue.js 中过滤数组和循环 V-for