roo*_*tit 7 vue.js vue-component vuejs2 vuetify.js
环境:
vue@^2.6.10:
vuetify@^2.1.0
Run Code Online (Sandbox Code Playgroud)
我想用来v-data-table显示搜索结果并在v-data-table.
不幸的是,我有两个问题:
我需要改变什么?
模板
<v-data-table
:headers="headers"
:items="search_result"
>
<template slot="items" slot-scope="row">
<td>{{row.item.no}}</td>
<td>{{row.item.result}}</td>
<td>
<v-btn class="mx-2" fab dark small color="pink">
<v-icon dark>mdi-heart</v-icon>
</v-btn>
</td>
</template>
</v-data-table>
Run Code Online (Sandbox Code Playgroud)
脚本
data () {
return {
headers: [
{ text: 'no', value: 'no' },
{ text: 'result', value: 'result' },
{ text: 'good', value: 'good'},
],
// in real case initial search_result = [], and methods: search function inject below data
search_result: [{no: 0, result: 'aaa'}, {no:2, result: 'bbb'],
}
},
Run Code Online (Sandbox Code Playgroud)
Mic*_*evý 25
item,而不是items<tr>到插槽模板中@click="onButtonClick(row.item)到v-btn和创建方法onButtonClick <v-data-table :headers="headers" :items="search_result">
<template v-slot:item="row">
<tr>
<td>{{row.item.no}}</td>
<td>{{row.item.result}}</td>
<td>
<v-btn class="mx-2" fab dark small color="pink" @click="onButtonClick(row.item)">
<v-icon dark>mdi-heart</v-icon>
</v-btn>
</td>
</tr>
</template>
</v-data-table>
Run Code Online (Sandbox Code Playgroud)
methods: {
onButtonClick(item) {
console.log('click on ' + item.no)
}
}
Run Code Online (Sandbox Code Playgroud)
...上面的解决方案是用您自己的替换默认行渲染,因此希望某些v-data-table功能不起作用(没有尝试,但我希望行选择、分组、就地编辑等将被破坏)。如果这对您来说是问题,这里是替代解决方案:
{ text: "", value: "controls", sortable: false }item槽(行渲染)。item.controls改为覆盖插槽。注意“控件”与列定义中的相同 - 我们只是覆盖了“控件”列的呈现 <v-data-table :headers="headers" :items="search_result">
<template v-slot:item.controls="props">
<v-btn class="mx-2" fab dark small color="pink" @click="onButtonClick(props.item)">
<v-icon dark>mdi-heart</v-icon>
</v-btn>
</template>
</v-data-table>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19501 次 |
| 最近记录: |