DropdownMenu 下拉菜单

请问如何实现部分带有下拉框功能,但是部分不带有
使用的是vant的DropdownMenu 下拉菜单,但是如果加上disabled点击就不会触发事件了

img

看看你disabled的是不是整个,而不是某个菜单项了。

参考GPT和自己的思路:

对于你的问题,我认为可以通过设置 DropdownMenu 组件的 options 数组来实现部分带有下拉框功能,部分不带有。具体来说,可以按照以下步骤操作:

  1. 在 options 数组中,对需要带有下拉框功能的选项设置 subMenuOptions 数组来定义下拉菜单的内容,对不需要带有下拉框功能的选项则不设置 subMenuOptions 数组。

  2. 使用 :disabled 属性来控制某些选项是否可用。需要注意的是,如果加了 disabled 属性,点击就不会触发事件了,但是可以通过设置 @click.native 事件来弥补这个问题,具体来说,可以在 DropdownMenu 组件中添加以下代码:

    @click.native="handleClick"
    

    然后在 methods 中添加一个 handleClick 方法来处理点击事件,具体操作根据实际情况而定。

下面是一个示例代码片段,供你参考:

<van-dropdown-menu>
  <van-dropdown-item
    v-for="option in options"
    :key="option.value"
    :value="option.value"
    :disabled="option.disabled"
    :sub-menu-options="option.subMenuOptions"
    @click.native="handleClick"
  >
    {{ option.label }}
  </van-dropdown-item>
</van-dropdown-menu>

<script>
export default {
  data() {
    return {
      options: [
        { label: '选项1', value: 'option1', subMenuOptions: [{ value: 'subOption1', label: '子选项1' }, { value: 'subOption2', label: '子选项2' }] },
        { label: '选项2', value: 'option2', disabled: true },
        { label: '选项3', value: 'option3' },
        { label: '选项4', value: 'option4', subMenuOptions: [{ value: 'subOption3', label: '子选项3' }] }
      ]
    }
  },
  methods: {
    handleClick(value) {
      if (!this.options.find(o => o.value === value)?.disabled) {
        // 执行点击事件的逻辑
      }
    }
  }
}
</script>