doc.md 4.1 KB

Menu 菜单

介绍

向下弹出的菜单列表

安装

import { createApp } from 'vue';
// vue
import { Menu, MenuItem } from '@nutui/nutui';
// taro
import { Menu, MenuItem } from '@nutui/nutui-taro';
const app = createApp();
app.use(Menu);

代码演示

基础用法

<nut-menu>
  <nut-menu-item v-model="state.value1" :options="state.options1" />
  <nut-menu-item v-model="state.value2" @change="handleChange" :options="state.options2" />
</nut-menu>
import { reactive, ref } from 'vue';

export default {
  setup() {
    const state = reactive({
      options1: [
        { text: '全部商品', value: 0 },
        { text: '新款商品', value: 1 },
        { text: '活动商品', value: 2 }
      ],
      options2: [
        { text: '默认排序', value: 'a' },
        { text: '好评排序', value: 'b' },
        { text: '销量排序', value: 'c' },
      ],
      options3: [
        { text: '全部商品', value: 0 },
        { text: '家庭清洁/纸品', value: 1 },
        { text: '个人护理', value: 2 },
        { text: '美妆护肤', value: 3 },
        { text: '食品饮料', value: 4 },
        { text: '家用电器', value: 5 },
        { text: '母婴', value: 6 },
        { text: '数码', value: 7 },
        { text: '电脑、办公', value: 8 },
        { text: '运动户外', value: 9 },
        { text: '厨具', value: 10 },
        { text: '医疗保健', value: 11 },
        { text: '酒类', value: 12 },
        { text: '生鲜', value: 13 },
        { text: '家具', value: 14 },
        { text: '传统滋补', value: 15 },
        { text: '汽车用品', value: 16 },
        { text: '家居日用', value: 17 },
      ],
      value1: 0,
      value2: 'a',
      value3: 0
    });

    const item = ref('');

    const onConfirm = () => {
      item.value.toggle();
    }

    const handleChange = val => {
      console.log('val', val);
    }

    return {
      state,
      item,
      onConfirm,
      handleChange
    };
  }
}

自定义菜单内容

使用实例上的 toggle 方法可以手动关闭弹框。

<nut-menu>
  <nut-menu-item v-model="state.value1" :options="state.options1" />
  <nut-menu-item title="筛选" ref="item">
    <div :style="{display: 'flex', flex: 1, 'justify-content': 'space-between', 'align-items': 'center'}">
      <div>自定义内容</div>
      <div @click="onConfirm">关闭</div>
    </div>
  </nut-menu-item>
</nut-menu>

一行两列

<nut-menu>
  <nut-menu-item v-model="state.value3" :cols="2" :options="state.options3" />
</nut-menu>

自定义选中态颜色

<nut-menu active-color="green">
  <nut-menu-item v-model="state.value1" :options="state.options1" />
  <nut-menu-item v-model="state.value2" @change="handleChange" :options="state.options2" />
</nut-menu>

禁用菜单

<nut-menu>
  <nut-menu-item disabled v-model="state.value1" :options="state.options1" />
  <nut-menu-item disabled v-model="state.value2" @change="handleChange" :options="state.options2" />
</nut-menu>

API

Menu Props

参数 说明 类型 默认值
active-color 选项的选中态图标颜色 String #F2270C

MenuItem Props

参数 说明 类型 默认值
title 菜单项标题 String 当前选中项文字
options 选项数组 Array -
disabled 是否禁用菜单 Boolean false
cols 可以设置一行展示多少列 options Number 1
title-icon 自定义标题图标 String 'down-arrow'

MenuItem Events

事件名 说明 回调参数
change 选择 option 之后触发 选择的 value