javascript - 扩展 Vuetify 按钮以在保存后显示成功
问题描述
我正在尝试扩展 Vuetify v-btn
,以便在它的loading
道具离开后true -> false
我可以临时更改按钮。
该watch
函数被调用,但它没有换出slot
文本Saved!
。
<template>
<v-btn v-bind="{ ...$attrs, disabled: $attrs.disabled || success }">
<slot v-if="!success"></slot>
<template v-else><v-icon>check</v-icon> Saved!</template>
</v-btn>
</template>
<script lang="ts">
import Vue from "vue";
export default Vue.extend({
name: "SaveButton",
data: () => ({
success: false,
}),
watch: {
loading(loading, wasLoading) {
if (!loading && wasLoading) {
this.success = true;
setTimeout(() => {
this.success = false;
}, 300e3);
}
},
},
});
</script>
解决方案
我不完全确定我得到了你想要做的事情。但是此代码有效:
<template>
<v-btn>
<slot v-if="!success" />
<template v-else>
<v-icon>mdi-check</v-icon>Saved
</template>
</v-btn>
</template>
<script lang="ts">
import { VBtn } from 'vuetify/lib'
export default {
name: 'SaveButton',
extends: VBtn,
data: () => ({
success: false,
}),
watch: {
loading (loading, wasLoading) {
if (!loading && wasLoading) {
this.success = true
setTimeout(() => {
this.success = false
}, 300e3)
}
},
},
}
</script>
声明
- 如果您使用的是 SFC,则使用 extends 属性(您可以在名称下看到它)Vue API 文档
- 您需要在检查之前放置 mdi-
- 如果你想扩展它,你需要导入 VBtn 组件
推荐阅读
- swift - 无法与帮助应用程序通信。尝试保存 LocalNotification 时
- php - 无法使用 docker-compose 和 php-fpm 连接到 mysqli_connect()
- c++ - 我无法在 Visual Studio 代码中使用“开始调试”选项
- java - 使用for循环重复对binarySearch(Java)的列表进行升序排序
- go - How do I validate a time.Time value using go-playground/validator.v9?
- javascript - HTMLSelectElement.function 中未定义错误 onchange (function)
- machine-learning - 我应该使用哪种 ML 算法来完成这项任务?
- reactjs - 仅使用 JSON 子文档数据反应表
- rest - 无法在 Golang 中读取 cookie(路由器:chi)
- python - 编写一个函数 sum_integers(start, end) 接受两个正整数 start 和 end ,并返回所有整数的和