我有一个 Vuetify 数据表
<v-data-table
:headers="headers"
:items="members"
item-key="id"
v-model="selected"
:search="search"
>
<template slot="items" slot-scope="props">
<tr :active="props.selected" @click="select(props.item)">
<td>{{ props.item.name }}</td>
<td class="text-xs-right">{{ props.item.FirstName}}</td>
<td class="text-xs-right">{{ props.item.LastName }}</td>
<td class="text-xs-right">{{ props.item.email }}</td>
<td class="text-xs-right">{{ props.item.department}}</td>
<td class="text-xs-right">{{ props.item.division}}</td>
</tr>
</template>
Run Code Online (Sandbox Code Playgroud)
当我选择一行时,我希望能够在同一页面上使用一些数据填充一个项目,例如 v-card 中的姓名和电子邮件。我目前有 {{msg}}
在我的脚本中我有
return {
msg: "",
Run Code Online (Sandbox Code Playgroud)
然后
select(selectedItem) {
this.selected = [];
this.members.forEach(item => {
if (item.id == selectedItem.id) {
this.selected.push(item);
this.msg = selectedItem.FirstName;
}
});
},
Run Code Online (Sandbox Code Playgroud)
我需要将姓名放入味精中。我觉得我要走很长的路来获取我的数据,并且想知道是否有人有更好的解决方案。感谢您的支持。
Nic*_*lai 11
<v-data-table @click:row="rowClick" item-key="name" single-select ...
methods: {
rowClick: function (item, row) {
row.select(true);
//item - selected item
}
}
<style>
tr.v-data-table__selected {
background: #7d92f5 !important;
}
</style>
Run Code Online (Sandbox Code Playgroud)
或者
<style scoped>
/deep/ tr.v-data-table__selected {
background: #7d92f5 !important;
}
</style>
Run Code Online (Sandbox Code Playgroud)
示例 https://codepen.io/nicolai-nikolai/pen/GRgLpNY
由于数据表 和 之间存在绑定this.selected,因此您只需填充msg为组件的计算属性即可。您不需要this.selected通过监听click事件来手动添加。
computed: {
msg() {
const selectedRow = this.selected[0];
return selectedRow ? `${selectedRow.firstName} ${selectedRow.lastName}` : "no data selected";
}
}
Run Code Online (Sandbox Code Playgroud)
我添加了一个最小的例子。请注意,对于 v-data-table 的 item-key 属性,您应该使用唯一值。
<template>
<v-card>
<v-card-text>
<v-data-table :headers="headers" :items="members" v-model="selected" item-key="id">
<template slot="items" slot-scope="props">
<td>
<v-checkbox
v-model="props.selected"
:disabled="!props.selected && selected.length != 0"
:indeterminate="!props.selected && selected.length != 0"
></v-checkbox>
</td>
<td>{{ props.item.firstName}}</td>
<td>{{ props.item.lastName }}</td>
</template>
</v-data-table>
{{ msg }}
</v-card-text>
</v-card>
</template>
Run Code Online (Sandbox Code Playgroud)
<script>
export default {
data() {
return {
headers: [
{ text: "Select", value: "id", sortable: false },
{ text: "First Name", value: "firstName", sortable: true },
{ text: "Last Name", value: "lastName", sortable: true }
],
selected: [],
members: [
{
id: 1,
firstName: "a",
lastName: "b"
},
{
id: 2,
firstName: "x",
lastName: "y"
}
]
};
},
computed: {
msg() {
const selectedRow = this.selected[0];
return selectedRow ? `${selectedRow.firstName} ${selectedRow.lastName}` : "no data selected";
}
}
};
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20483 次 |
| 最近记录: |