Ant Design Vue Select 下拉框用法

Select下拉框用法是前端业务开发中基础组件,任何一个系统都会用到这个组件,html原生的组件功能简单外观丑陋,Ant Design Select对原生下拉框进行了功能拓展和美化,几乎能满足你所有的要求。

Select标签

<a-select default-value="itxst" style="width: 150px" >
  <a-select-option value="itxst">Select组件</a-select-option>
</a-select>

基础用法

<template>
  <div>
    <a-select default-value="www.microsoft.com" style="width: 120px" @change="handleChange">
      <a-select-option
        :value="item.value"
        :disabled="item.disabled"
        v-for="item in options"
        :key="item.value"
      >{{item.label}}</a-select-option>
    </a-select>
    <a-select default-value="itxst" style="width: 150px" disabled>
      <a-select-option value="itxst">禁用Select组件</a-select-option>
    </a-select>
    <a-select default-value="itxst" style="width: 120px" loading>
      <a-select-option value="itxst">加载中效果</a-select-option>
    </a-select>
  </div>
</template>
<script>
//下拉框数据结构
var options = [
  { label: "微软", value: "www.microsoft.com", disabled: false },
  { label: "百度(禁止选择)", value: "www.baidu.com", disabled: true },
  { label: "谷歌", value: "www.google.com", disabled: false },
  { label: "IT小书童", value: "www.itxst.com", disabled: false }
];
export default {
  data() {
    return {
      options: options
    };
  },
  methods: {
    handleChange(value) {
      console.log("你选择了:" + value);
    }
  }
};
</script>

例子

标签模式

把模式设置成mode="tags"

<a-select placeholder="标签模式" mode="tags"></a-select>

完整代码

<template>
  <div>
    <a-select placeholder="标签模式" mode="tags"  style="width: 220px" @change="handleChange">
      <a-select-option
        :value="item.value"
        :disabled="item.disabled"
        v-for="item in options"
        :key="item.value"
      >{{item.label}}</a-select-option>
    </a-select> 
  </div>
</template>
<script>
//下拉框数据结构
var options = [
  { label: "微软", value: "www.microsoft.com", disabled: false },
  { label: "谷歌(禁止选择)", value: "www.google.com", disabled: true },
  { label: "IT小书童", value: "www.itxst.com", disabled: false }
];
export default {
  data() {
    return {
      options: options
    };
  },
  methods: {
   //获取选中项
    handleChange(value) {
      console.log("你选择了:" + value);
    }
  }
};
</script>

例子

获取选中项

默认情况下我们可以通过change事件获取下拉框的value值,ant design提供了label-in-value属性获取选中对象。

<template>
  <div>
    <a-select placeholder="标签模式" mode="tags" 
     label-in-value style="width: 220px"
      @change="handleChange">
      <a-select-option
        :value="item.value"
        :disabled="item.disabled"
        v-for="item in options"
        :key="item.value"
      >{{item.label}}</a-select-option>
    </a-select> 
  </div>
</template>
<script>
//下拉框数据结构
var options = [
  { label: "微软", value: "www.microsoft.com", disabled: false },
  { label: "谷歌(禁止选择)", value: "www.google.com", disabled: true },
  { label: "IT小书童", value: "www.itxst.com", disabled: false }
];
export default {
  data() {
    return {
      options: options
    };
  },
  methods: {
    //获取选择对象
    handleChange(items) {   
      //如果是mode='tag''multiple'模式 items是数字,否则是对象  items.key
      alert("你选择了:" + items[0].key+" ; "+items[0].label);
    }
  }
};
</script>

隐藏已选项

实现思路:提供计算属性刷选掉已选项,tag模式不支持

<template>
  <div>
    <a-select placeholder="标签模式" mode="multiple"  
    style="width: 220px" @change="handleChange">
      <a-select-option
        :value="item.value"
        :disabled="item.disabled"
        v-for="item in filteredOptions"
        :key="item.value"
      >{{item.label}}</a-select-option>
    </a-select> 
  </div>
</template>
<script>
//下拉框数据结构
var options = [
  { label: "微软", value: "www.microsoft.com", disabled: false },
  { label: "谷歌(禁止选择)", value: "www.google.com", disabled: true },
  { label: "IT小书童", value: "www.itxst.com", disabled: false }
];
export default {
  data() {
    return {
      selectedItems:[],//选中对象
      options: options
    };
  },
  computed: {
    filteredOptions() {
     var that=this;
      var  arr=[];
      that.options.forEach(a=>{
         var isExist=false;
         that.selectedItems.forEach(m=>{ 
          if(a.value==m) isExist=true;
        });
        if(isExist==false) arr.push(a);
      });
      return arr;
    },
  },
  methods: {
    //获取选择对象
    handleChange(items) {   
      this.selectedItems=items; 
    }
  }
};
</script>

例子

快速入门 Button 按钮 Affix 固钉 Breadcrumb 面包屑 Dropdown 下拉菜单 Dropdown 下拉菜单 Dropdown 展开隐藏方法 Dropdown 属性及事件 Menu 导航菜单 Menu 导航菜单 Menu 导航菜单属性及事件 Pagination 分页 Pagination 跳转 Pagination 自定义下拉选项 Pagination 选择每页数量 Pagination 自定义页码文字 Pagination 样式风格 Pagination 属性列表 Pagination 事件列表 Steps 步骤条 Steps 步骤条基本用法 Steps 自定义图标和html Steps 属性列表 AutoComplete 自动填充 AutoComplete 自动完成组件 AutoComplete 前端筛选函数 AutoComplete 自定义选项 AutoComplete Ajax服务器端数据 AutoComplete 查询模式 AutoComplete 属性列表 AutoComplete 事件 AutoComplete 方法列表 Cascader 级联选择 Cascader 基础用法 Cascader 搜索筛选 Cascader ajax服务器端加载 Cascader 样式及自定义图标 Cascader fieldNames 自定义字段 Cascader API属性及事件 Cascader 属性及事件Node.js版 Cascader 属性及事件浏览器版 Checkbox 多选框 Checkbox 多选框用法 Checkbox 自定义布局 Checkbox 全选反选 Checkbox 属性事件列表 DatePicker 日期选择框 DatePicker 日期选择框用法 DatePicker 设置不可选日期 DatePicker 选择时间 DatePicker 设置日期格式 DatePicker 日期范围选择 DatePicker 定制日期单元格 DatePicker 自定义渲染 DatePicker 属性和事件 Input 输入框 Input 输入框用法 Input 密码框 Input 图标 Input 搜索框 Input 格式化提示 Input 属性及事件列表 Input addonAfter属性 InputNumber 数字输入框 InputNumber 数字输入框 InputNumber 属性和事件 Mentions 提及 Mentions提及用法 Mentions 属性和事件 Radio 单选框 Radio 单选框用法 Radio 单选框分组 Radio 按钮样式 Radio 属性事件 Rate 评分组件 Rate 评分组件用法 Rate 属性和事件 Select 下拉框 Select 下拉框用法 Select 下拉框联动 Select 下拉框多选 Select 下拉框分组 Select 搜索框 Select 属性和事件 Slider 滑动输入条 Slider 滑动输入条 Slider 属性 afterChange 事件 change 拖动事件 Switch 开关 Switch 开关用法