我正在使用 VueJS 2.6.12 的开发版本。
在我的 HTML 中,我有一个看起来像这样的 VueJS 模板(为了小例子,我已经把它剥离了):
<div>
<table class="table">
<thead>
<tr><th>AAA</th><th>BBB</th></tr>
</thead>
<tbody id="main">
<my-item v-for="item in dataset" :d="item" :key="item.key"/> <!-- (this part works) -->
</tbody>
</table>
</div>
在我的 JavaScript 中,我像这样定义了一个全局 Vue 组件(这很有效,显示了我的数据):
Vue.component('my-item', {
props: ["d"],
template: `<tr><td>{{this.d.AAA}}</td><td>{{this.d.BBB}}</td></tr>`
});
当我加载页面时,我看到我的数据正确呈现,但表格标题位于底部。元素(包含我的tr
数据)存在,尽管在.table
在浏览器检查器中查看 DOM 显示 VueJS 构建了这个结构,将元素提升到外部tbody
甚至table
自身:
<div>
<tr><td>aaa</td><td>bbb</td></tr> <!-- Why are these two rows outside the table? -->
<tr><td>yyy</td><td>zzz</td></tr>
<table class="table">
<thead>
<tr><th>AAA</th><th>BBB</th></tr>
</thead>
<tbody id="main"></tbody>
</table>
</div>
为什么会发生这种情况,我该如何解决? 我期待我的 <tr>...</tr> 元素被注入到标题行tbody
下方的那个中。thead
甚至有点奇怪,如果我在上面和下面手动添加一些行:
<tbody id="main">
<tr><td>111</td><td>222</td></tr>
<my-item v-for="item in dataset" :d="item" :key="item.key"/>
<tr><td>888</td><td>999</td></tr>
</tbody>
那些确实得到了保留:
<div>
<tr><td>aaa</td><td>bbb</td></tr> <!-- ...but these still got hoisted out if the table -->
<tr><td>yyy</td><td>zzz</td></tr>
<table class="table">
<thead>
<tr><th>AAA</th><th>BBB</th></tr>
</thead>
<tbody id="main">
<tr><td>111</td><td>222</td></tr>
<tr><td>888</td><td>999</td></tr>
</tbody>
</table>
</div>