单击按钮后更新b字段消息

时间:2018-08-16 07:10:18

标签: vue.js buefy

我是Vue的新手,我想做一件简单的事情,即在单击按钮后在b-field中显示结果。

下面是我的Login.vue代码

<template>
    <section id="login">
        <h1>Login</h1>
        <b-field label=""
            type="is-warning"
            message="Please enter a valid email">
            <b-input type="email" name="email" v-model="input.email" placeholder="E-mail"></b-input>
        </b-field>
        <b-field label=""
            type="is-warning"
            message="Please enter your password">
            <b-input type="password" name="password" v-model="input.password" placeholder="Password"></b-input>
        </b-field>
        <b-field message="hohoho"
            type="is-danger"
            name="result"
            >
            <button type="button" v-on:click="login()" class="button">Login</button>
        </b-field>
    </section>
</template>

<script>
    export default {
        name: 'Login',
        data () {
            return {
                input: {
                    email: "",
                    password: ""
                }
            }
        },
        methods: {
            login () {
                if(this.input.email != "" && this.input.password != "") {
                    if(this.input.email == this.$parent.mockAccount.email && this.input.password == this.$parent.mockAccount.password) {
                        this.$emit("authenticated", true)
                        this.$router.replace({ name: "secure" })
                    } else {
                        this.result = "The email and / or password is incorrect"
                        console.log("The email and / or password is incorrect")
                    }
                } else {
                    this.result = "An email and password must be present"
                    console.log("An email and password must be present")
                }
            }
        }
    }
</script>

我在更新名称为b-field的{​​{1}}的内容时遇到了问题... result没有更新this.result的内容。

1 个答案:

答案 0 :(得分:2)

我猜您想更新此元素的 message 属性吗?

<b-field message="hohoho"
            type="is-danger"
            name="result">
            <button type="button" v-on:click="login()" class="button">Login</button>
</b-field>

如果我是对的,您只需要将结果道具绑定到 message 属性,如下所示:

<b-field :message="result"
            type="is-danger"
            name="result">
            <button type="button" v-on:click="login()" class="button">Login</button>
</b-field>

请注意:message="result",它是v-bind:message="result"的快捷方式。

非常重要的是,您需要在数据中定义结果道具

data () {
    return {
        input: {
            email: "",
            password: ""
        },
        result: ""
    }
},

更多信息here