You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js 如何仅在指定条件下绑定点击事件?

实现条件触发点击事件的几种方式

你当前代码里的判断条件和需求不符,先修正逻辑后,可通过以下几种清晰的方式实现:

方式一:模板内短路求值(简洁写法)

直接在@click中用逻辑与(&&)实现,仅当条件满足时执行方法:

<div class="relative h-20 border border-gray-100 sm:h-24" 
  @click="(!date.disabled || date.availability === 'none') && selectDate(date)">
  {{date}}
</div>

方式二:抽离逻辑到方法中(易维护)

把判断逻辑放到方法里,让模板更简洁,也方便后续扩展:

<template>
  <div class="relative h-20 border border-gray-100 sm:h-24" 
    @click="handleDateClick(date)">
    {{date}}
  </div>
</template>

<script>
export default {
  methods: {
    handleDateClick(date) {
      if (!date.disabled || date.availability === 'none') {
        this.selectDate(date);
      }
    },
    selectDate(date) {
      // 这里编写日期选择的具体逻辑
    }
  }
}
</script>

方式三:Vue 3组合式API写法

如果使用Vue 3的<script setup>语法,可这样写:

<template>
  <div class="relative h-20 border border-gray-100 sm:h-24" 
    @click="handleDateClick(date)">
    {{date}}
  </div>
</template>

<script setup>
const handleDateClick = (date) => {
  if (!date.disabled || date.availability === 'none') {
    selectDate(date);
  }
};

const selectDate = (date) => {
  // 日期选择逻辑
};
</script>

注意:你原代码中的判断条件是!date.disabled || date.availability !== 'none',和需求的!date.disabled || date.availability === 'none'不一致,这是核心问题,必须修正条件才能达到预期效果。

内容的提问来源于stack exchange,提问作者Waleed Tariq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 07:05:16