【发布时间】:2018-12-10 05:33:02
【问题描述】:
虽然我可以使用 v-for 和内联 mustache 语法很好地呈现 HTML 表格,但我无法使用组件获得相同的结果。
Vue / 浏览器移除了包装的 TABLE 标记并将 TR 插入到 TABLE 上下文之外,因此它们无法正确呈现:
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<div id="app">
<h2>Vue table rows inline (works)</h2>
<table border="1">
<tr>
<th>Name</th>
<th>Value</th>
</tr>
<tr v-for="(row, index) in mydata">
<td>{{row.name}}</td>
<td>{{row.value}}</td>
</tr>
</table>
<h2>Vue table rows using component (broken)</h2>
<table border="1">
<tr>
<th>Name</th>
<th>Value</th>
</tr>
<my-row v-for="(row, index) in mydata" :key="row.name" :name="row.name" :val="row.value"></my-row>
</table>
</div>
<script>
Vue.component('my-row', {
props: ['name', 'val'],
template: '<tr><td>{{name}}</td><td>{{val}}</td></tr>'
})
new Vue({
el: "#app",
data: {
mydata: [{
name: "A",
value: 1
},
{
name: "B",
value: 2
},
{
name: "C",
value: 3
}
]
}
})
</script>
你也可以在https://jsfiddle.net/MCAU/eywraw8t/128217/看到这个
我需要做什么才能使组件版本正常工作? (添加 TBODY 没有任何区别。)
【问题讨论】: