有条件的Vuetify快餐栏

时间:2019-10-24 00:35:40

标签: javascript vue.js vuetify.js

有人知道如何根据服务器的回答结果显示小吃条。

例如,如果提交正常,则显示带有成功消息的成功绿色小吃店,但是如果我遇到错误,则需要显示带有错误消息绑定的红色错误小吃店。

我认为我需要通过一种方法来显示它。 我只想在一个这样的小吃店里做。

<v-snackbar
    :color = "color" 
> {{text here}}
</v-snackbar

服务器帖子示例

http.post(apiAdresse, objectToPost)
   .then(() => {
     something to do here})
   .catch(error => {
     console.log(error)};)

编辑代码:

        <v-snackbar
                :color="snackbar.color"
                v-model="snackbar.show">
            <v-icon class="snackIcon">{{snackbar.icon}}</v-icon>
            {{ snackbar.message }}
            <v-btn
                    dark
                    text
                    @click="snackbar = false"
            >
                Close
            </v-btn>

        </v-snackbar>

当我单击关闭btn时

Error in v-on handler: "TypeError: Cannot use 'in' operator to search for 'show' in false"


1 个答案:

答案 0 :(得分:2)

我会这样做:

<template>
    <!-- Set the color, v-model and message values in the data prop -->
    <v-snackbar :color="snackbar.color" v-model="snackbar.show">
        {{ snackbar.message }}
    </v-snackbar>
</template>

<script>
    export default {
        data: () => ({
            snackbar: {
                show: false,
                message: null,
                color: null
            }
        }),
        methods: {
            submitAction() {
                http.post(apiAdresse, objectToPost)
                .then(() => {
                    this.snackbar = {
                        message: 'Your success message',
                        color: 'success',
                        show: true
                    }
                })
                .catch(error => {
                    this.snackbar = {
                        message: 'Your error message',
                        color: 'error',
                        show: true
                    }
                })
            }
        }
    }
</script>

您得到Error in v-on handler: "TypeError: Cannot use 'in' operator to search for 'show' in false"的原因是您试图将快餐栏对象更新为布尔值。您应该改为:

<v-btn dark text @click="snackbar.show = false">
   Close
</v-btn>