Vue——el-option下拉框绑定

1、正常使用v-for 进行遍历 下拉框内容,如果需要增加一个自定义的值,则加一个el-option

el-option用法:

参数

说明

类型

可选值

默认值

value

选项的值

string/number/object

label

选项的标签,若不设置则默认与

value

相同

string/number

disabled

是否禁用该选项

boolean

false

在日常使用el-select 中,新增一条option 如果value对应到值是string则 不影响前端显示

<el-option key="6" label="苏州大闸蟹" value="6" />

 遇到下拉框不显示label值,如果绑定的vaule 是number,则需要前面加上: 不然会匹配不到,String不加:没问题

具体v-bind 用法:https://cn.vuejs.org/v2/api/#v-bind

<el-option key="6" label="苏州大闸蟹" :value="6" />

demo如下:

<template>
  <div>
    <el-button @click="printSelect">调试</el-button>
    //value1 的类型 需要跟:value="item.value" 一样
    <el-select ref="selectValue1" v-model="value1" filterable placeholder="请选择">
      <el-option
        v-for="item in options1"
        :key="item.value"
        :label="item.label"
        :value="item.value"
      />
      //vaule1 为string 则 value="选项6" 前面可以不用加:即v-bind 数据绑定
      <el-option key="选项6" label="扬州炒饭" value="选项6" />
    </el-select>
    <el-select ref="selectValue2" v-model="value2" no-match-text filterable placeholder="请选择">
      //value2为number 前面需要:
      <el-option key="5" label="扬州炒饭" :value="5" />
      <el-option key="6" label="苏州大闸蟹" :value="6" />
    </el-select>
  </div>
</template>

js如下:printSelect方法 测试 页面显示 和 选中之后 数据类型 和值

<script>
export default {
  data() {
    return {
      options1: [{
        value: '选项1',
        label: '黄金糕'
      }, {
        value: '选项2',
        label: '双皮奶'
      }, {
        value: '选项3',
        label: '蚵仔煎'
      }, {
        value: '选项4',
        label: '龙须面'
      }, {
        value: '选项5',
        label: '北京烤鸭'
      }],
      value1: '选项1',
      value2: ''
    }
  },
  created() {
    //修改value1 value2 值,查看页面是否匹配到label
    this.getValue()
  },
  methods: {
    printSelect: function() {
        //打印选中到 类型 值 和label值
      console.log(typeof this.value1 + '-' + this.value1 + '-' + this.$refs.selectValue1.selected.label)
      console.log(typeof this.value2 + '-' + this.value2 + '-' + this.$refs.selectValue2.selected.label)
    },
    getValue: function() {
      this.value1 = '选项2'
      this.value2 = 5
    }
  }
}
</script>

2、测试页面显示如下:

第二个下拉框如果改成

<el-option key="5" label="扬州炒饭" value="5" />

则label显示不了label值

 

### 使用 Vue 实现自定义下拉选择框组件 #### 组件结构概述 为了创建一个功能齐全的下拉选择框,在 Vue 中可以利用 Composition API 来管理逻辑,这有助于更好地组织代码并提高可维护性[^1]。 #### 定义 Props 和 Data 首先,定义组件接收外部传入的数据项列表作为 `props` 属性,并设置默认值。同时初始化内部状态用于跟踪当前选中的选项: ```javascript import { defineComponent, ref } from 'vue'; export default defineComponent({ name: "CustomDropdown", props: { options: Array, placeholder: String }, setup(props) { const selectedOption = ref(null); return { selectedOption }; } }); ``` #### 构建模板部分 接着构建 HTML 结构来展示下拉菜单及其各个条目。这里采用事件绑定的方式监听用户的点击行为以便更新选定的状态: ```html <template> <div class="dropdown"> <!-- 显示已选内容 --> <button @click="toggleMenu">{{selectedOption ? selectedOption : placeholder}}</button> <!-- 下拉菜单容器 --> <ul v-if="isMenuVisible" class="menu-items"> <li v-for="(option, index) in options" :key="index" @click="selectItem(option)"> {{ option }} </li> </ul> </div> </template> ``` #### 添加样式支持 为了让用户体验更佳,还需适当加入 CSS 样式美化界面布局: ```css <style scoped> .dropdown button { width: 100%; padding: .5em; } .menu-items li:hover { background-color: lightgray; } </style> ``` #### 处理交互逻辑 最后完善 JavaScript 部分处理用户操作后的响应动作,比如显示/隐藏菜单、记录新选择等: ```javascript setup(props) { ... let isMenuVisible = ref(false); function toggleMenu() { isMenuVisible.value = !isMenuVisible.value; } function selectItem(item) { selectedOption.value = item; isMenuVisible.value = false; // 关闭菜单 } return { selectedOption, isMenuVisible, toggleMenu, selectItem }; } ``` 上述实现了基础版的自定义下拉选择框组件,可以根据实际需求进一步扩展更多特性如搜索过滤等功能[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值