【问题标题】:Can I use a <tr> tag inside a <tr> in Vue.js?我可以在 Vue.js 的 <tr> 中使用 <tr> 标签吗?
【发布时间】:2018-07-11 16:19:58
【问题描述】:

我有下面的代码在 vue.js 中创建一个动态表。

<template>
    <tr class="left-align"  v-for="(item,index) in itemList" :key="index.id">
        <td>{{item.items}}</td>
    </tr>
    <tr class="left-align"  v-for="(item,index) in itemList" :key="index.id">
        <td>{{item.items}}(future)</td>
    </tr>
    <tr class="left-align"  v-for="(item,index) in itemList" :key="index.id">
        <td>GAP</td>
    </tr>
</template>

但是这个输出不是我所期望的。结果是这样的:

我怎样才能达到我的预期输出?因为如果我尝试将它们包装在一个 &lt;tr&gt; 标记中,例如:

<tr>
    <tr>
        <td>
        </td>
    </tr>

    <tr>
        <td>
        </td>
    </tr>
</tr>

上面写着:

解析错误:x-invalid-end-tag

【问题讨论】:

  • 你的收官在哪里?
  • @HugoCox — td 元素的结束标签是可选的。

标签: javascript vue.js html-table vuejs2


【解决方案1】:

您可以使用tbody(或仅使用template 标签)将trs 包裹起来,并且只使用一个v-for:

 <tbody v-for="(item,index) in itemList" :key="index">
    <tr class="left-align">
        <td>{{item.items}}</td>
    </tr>
    <tr class="left-align">
        <td>{{item.items}}(future)</td>
    </tr>
    <tr class="left-align">
        <td>GAP</td>
    </tr>
 </tbody>

【讨论】:

  • 感谢这个,更简化和更清洁的工作:) 但我现在的问题是,我的标题不见了。哈哈!
  • 在&lt;tr&gt; 下直接使用&lt;tbody&gt; 在 HTML 中无效。
  • 我现在看到了。这似乎不可行,因为它在一行中添加了新表(一行显示所有数据而其他没有),并且我的标题被扩展到最右边。
  • @ramedju 我建议删除父tr(如果有的话)并在table 中添加tbody。见jsfiddle.net/eywraw8t/159309
【解决方案2】:

据我所知,在 HTML 中,不允许在 tr 中写入 tr。不过,您应该能够通过表格实现您想要的。

<template>
  <td>
    <table>

<tr class="left-align"  v-for="(item,index) in itemList" :key="index.id">
    <td>{{item.items}}</td>
</tr>
<tr class="left-align"  v-for="(item,index) in itemList" :key="index.id">
    <td>{{item.items}}(future)</td>
</tr>
<tr class="left-align"  v-for="(item,index) in itemList" :key="index.id">
    <td>GAP</td>
</tr>

    </table>
  </td>
</template>

预期的输出应该是:

<tr>
  <td>
    <table>

<tr>
    <td>
    </td>
</tr>

<tr>
    <td>
    </td>
</tr>

    </table>
  </td>
</tr>

处理此类错误的一个好方法是使用HTML Validator。您的 HTML 不应抛出任何错误或警告。例如,尝试复制/粘贴:

<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>sd</title>
</head>
<body>

<table>
<tr>
<td>
<table>
    <tr>
        <td>
            foo
        </td>
    </tr>

    <tr>
        <td>
            bar
        </td>
    </tr>
</table>
</td>
</tr>
</table>

</body>
</html>

【讨论】:

  • 你的意思是我应该使用&lt;tr&gt;标签而不是&lt;template&gt;标签?
  • @ramedju 我的意思是你不应该在另一个&lt;tr&gt; 下直接使用&lt;tr&gt;。我将进行编辑以增加清晰度。
  • 根据您的编辑,输出仍然与以前相同。
  • 我看不到你的图片。我不确定你想要什么。你说你有一个错误,我的回答解释了原因:)
  • 是的,这解决了错误,但输出仍然相同..你可以看到它here
猜你喜欢
  • 2019-01-13
  • 1970-01-01
  • 2011-09-27
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2017-08-15
  • 2021-12-22
相关资源
最近更新 更多