我有一个充满数据的表。我要绑定到b表中复选框的数据上有一个selected
属性。我似乎不知道该怎么做。
我的数据:
data: () => ({
tableData: [
{
title: "title01",
desc: "desc01",
selected: false
},
{
title: "title02",
desc: "desc02",
selected: false
},
],
tableColumns: [
{ key: "selected", label: "", sortable: false }
{ key: "title", label: "Title", sortable: false },
{ key: "desc", label: "Description", sortable: false }
})
html:
<b-table id="myTabel"
hover
striped
:items="tableData"
:fields="tableColumns">
<template slot="selected" slot-scope="row">
<b-form-group>
<input type="checkbox" v-model="How_To_Bind_To_Object_Prop?">
</b-form-group>
</template>
</b-table>
在我生命中,我无法设置v-model
来实际绑定到表数据。
v-model="tableData.selected"
将所有复选框绑定到所有数据对象。因此,如果您选择一个,则全部选中,反之亦然。我只是不知道如何仅将其绑定到该行的数据。
我可以通过使用更传统的HTML并使用Vue的v-for
遍历tableData
来绑定每个表行来做到这一点。但是,我们正在尝试将大多数(如果不是全部)表单迁移为使用bootstrap-vue。
所以,这很漂亮:
<table>
<thead>
<tr>
<th :key="key" v-for="(tableColumn, key) in tableColumns">
{{ tableColumn.label }}
</th>
</tr>
</thead>
<tbody>
<tr :key="key" v-for="(tableRow, key) in tableData">
<td>
<input type="checkbox"
v-model="tableRow.selected">
</td>
<td>
{{ tableRow.title }}
</td>
<td>
{{ tableRow.desc }}
</td>
</tr>
</tbody>
</table>
答案 0 :(得分:2)
您可以在作用域内的插槽中按以下方式访问行项目,并将嵌套的复选框绑定到selected
属性:
<template slot="selected" slot-scope="row">
<b-form-group>
<input type="checkbox" v-model="row.item.selected" /
</b-form-group>
</template>
答案 1 :(得分:1)
***该答案已被编辑。 @BoussadjraBrahim用户评论了一些回答此问题的代码和框代码。
正确的解决方法如下:
<b-table id="myTable"
hover
striped
:items="tableData"
:fields="tableColumns">
<template slot="selected" slot-scope="row">
<b-form-group>
<input type="checkbox" v-model="row.item.selected">
</b-for-group>
</template>
</b-table>
先前的错误答案: 使用this SO question的答案,我尝试过:
<b-table id="myTable"
hover
striped
:items="tableData"
:fields="tableColumns">
<template slot="selected" slot-scope="row">
<b-form-checkbox id="'selected'+row.index" v-model="row.item.selected" />
</template>
</b-table>
使用<b-form-checkbox>
和id="'selected'+row.index"
只能绑定到第一行。再加上样式与我想要的不同。