vuetifyjs v-simple-table - 单击时更改按钮的加载状态
Posted
技术标签:
【中文标题】vuetifyjs v-simple-table - 单击时更改按钮的加载状态【英文标题】:vuetifyjs v-simple-table - change the loading status of the button on click 【发布时间】:2021-02-04 08:31:18 【问题描述】:我有一个 vuetifyjs v-simple-table。我正在做 v-for 来填充一些数据。我在每一行都有一个按钮。当我单击按钮时,它应该显示加载状态(单击的按钮)。我有以下代码
<v-simple-table>
<template v-slot:default>
<thead>
<tr>
<th>
Status
</th>
<th class="text-left">
Actions
</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in parcels" v-bind:key="index" :class="item.order.bgColorClass">
<td>
<div class="status">
<span class="a-blue">Notified </span>
<v-icon>mdi-star</v-icon>
</div>
</td>
<td>
<v-btn :ref="item.order.orderId" :loading="false" text class="table-btn" @click="AddItem(item.order.orderId)">
<v-img src="images/plus-i.svg"></v-img>
</v-btn>
</td>
</tr>
</tbody>
</template>
</v-simple-table>
方法是
methods:
AddItem(orderId)
this.$refs[orderId][0].loading = true;
,
上面的方法显示了加载器,但我猜这不是正确的方法。我在控制台上收到以下错误
[Vue 警告]:避免直接改变一个 prop,因为它的值会是 每当父组件重新渲染时被覆盖。相反,使用 基于道具值的数据或计算属性。道具存在 变异:“加载”
如何正确改变点击按钮的加载状态?
【问题讨论】:
【参考方案1】:我会拿起那个按钮并把它包装起来,例如:
name: "wrapped-v-btn",
data()
return
loading: false
<template>
<v-btn
:loading="loading"
@click="loading=!loading"
v-bind="$attrs"
>
<v-img src="images/plus-i.svg"></v-img>
</v-btn>
</template>
...
<td>
<wrapped-v-btn text class="table-btn" />
</td>
【讨论】:
以上是关于vuetifyjs v-simple-table - 单击时更改按钮的加载状态的主要内容,如果未能解决你的问题,请参考以下文章
VuetifyJS - 滚动 v-navigation-drawer
Vuetifyjs错误未知的自定义元素:您是不是正确注册了组件
更改 VuetifyJS DataTable 单元格的默认宽度
组件已安装但模板标签未在生产环境中呈现(但在开发中呈现): Nuxtjs Vuejs Vuetifyjs Rollupjs