在vue中如何在符合条件的情况下才绑定事件

发布于 2022-09-04 22:46:18 字数 544 浏览 18 评论 0


 <button @click.prevent="getVerifyCode">获取验证码</button>

比如这样的一行代码,假设我有一个isRightPhoneNumber这样的变量,我希望只有当我的isRightPhoneNumbertrue时才让上面按钮的事件生效该怎么做?我想到的一个办法是在getVerifyCode函数里面加判断,像这样

if(!this.isRightPhoneNumber) return;

但是我不太想用这种办法,所以想问下有没有别的方法,类似于v-if之类的做法有吗

{{messageLogin?'登录':'密码登录'}}
<form class='message-form' v-if='messageLogin'></form>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

迷离° 2022-09-11 22:46:18

:disabled="!isRightPhoneNumber"

﹂绝世的画 2022-09-11 22:46:18

如果为了易读不在乎微乎其微的性能的话。

@click="isRightPhoneNumber && getVerifyCode()"
怪我闹别瞎闹 2022-09-11 22:46:18

在Vue2.4+ 版本上, 该问题可使用以下方式解决:

`<template>

<div class="c-button" 
    :class="{'c-button-over': isOver,'c-button-disabled' : isDisable}" 
    v-on="onEvents">
    <i class="fa" :class="cbutton.type"></i>
    <span class="button-title">{{cbutton.title}}</span>
    <span v-show="showHelp" class="button-help">{{cbutton.help}}</span>
</div>

</template>

<script>

export default {
    name: 'CommandButton',
    props:{
        cbutton:Object,
        currentRecords:Array
    },
    data() {
        return {
            showHelp: false,
            isOver: false
        }
    },
    computed:{
        isDisable() {
            return this.cbutton.isDisableFun(this.currentRecords);
        },
        onEvents() {
            let eventsObj = {};
            if(!this.isDisable) {
                eventsObj = {mouseover:this.btnOver,mouseout:this.btnOut,click:this.btnClick};
            }
            
            return eventsObj;
        }
    },
    mounted() {
        
    },
    methods: {
        btnClick(){
            this.cbutton.clickFun(this.currentRecords);
        },
        btnOver(){
            this.isOver=true;
        },
        btnOut(){
            this.isOver=false;
        }
    }
}

</script>`

通过 v-on 指令绑定对象的,结合 computed 计算依赖disabled属性监听的方式实现。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文