如何让Element Select默认选中第一个 – 实用代码实现

Element Select 是ElementUI中常用的一个下拉选择器组件,但在某些情况下,需要在页面刚加载时就默认选中第一个选项。本文从如何实现此功能、优化代码、兼容性等多个方面做出详细的阐述。

一、获取元素并修改value属性

要实现默认选中第一个,我们需要获取到Select组件中的第一个option并将其value值赋给Select组件的value属性。

<template>
  <el-select v-model="selected">
    <el-option v-for="(item, index) in options" :key="index" :label="item.label" :value="item.value"></el-option>
  </el-select>
</template>
<script>
  export default {
    data() {
      return {
        options: [
          { label: '选项1', value: '1' },
          { label: '选项2', value: '2' },
          { label: '选项3', value: '3' }
        ],
        selected: ''  // 这里定义一个空字符串用于存储选中的value值
      }
    },
    mounted() {
      // 在mounted钩子中获取第一个option,并将其value值赋给selected
      this.selected = this.options[0].value;
    }
  };
</script>

二、优化代码

上面的代码已经可以实现默认选中第一个了,但随着选项数量的增加,代码会变得冗长。下面介绍几个优化方式。

1.使用ref获取Select组件

使用Vue的ref指令可以获取到组件的dom元素,从而可以更方便地操作。这样我们就可以不需要在data中定义selected,而是直接通过ref获取到选中的值。

<template>
  <el-select ref="select">
    <el-option v-for="(item, index) in options" :key="index" :label="item.label" :value="item.value"></el-option>
  </el-select>
</template>
<script>
  export default {
    data() {
      return {
        options: [
          { label: '选项1', value: '1' },
          { label: '选项2', value: '2' },
          { label: '选项3', value: '3' }
        ]
      }
    },
    mounted() {
      // 在mounted钩子中获取第一个option,并设置Select的value属性
      this.$refs.select.$el.querySelector('.el-select-dropdown__item').click();
    }
  };
</script>

2.使用v-model双向绑定

通过v-model双向绑定,我们可以更方便地控制Select组件的value属性,代码也更加简洁。

<template>
  <el-select v-model="selected">
    <el-option v-for="(item, index) in options" :key="index" :label="item.label" :value="item.value"></el-option>
  </el-select>
</template>
<script>
  export default {
    data() {
      return {
        options: [
          { label: '选项1', value: '1' },
          { label: '选项2', value: '2' },
          { label: '选项3', value: '3' }
        ],
        selected: '1'  // 设置默认选中第一个
      }
    }
  };
</script>

三、兼容性

在一些特殊情况下,比如在el-table的column中使用时,直接设置value属性可能会出现问题。这时我们可以使用setSelectedValue方法来设置选中值。

<template>
  <el-table :data="tableData">
    <el-table-column label="姓名">
      <template slot-scope="scope">
        <el-select v-model="selected[scope.$index]" @change="handleChange(scope.$index)" ref="select">
          <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
        </el-select>
      </template>
    </el-table-column>
  </el-table>
</template>
<script>
  export default {
    data() {
      return {
        options: [
          { label: '选项1', value: '1' },
          { label: '选项2', value: '2' },
          { label: '选项3', value: '3' }
        ],
        tableData: [
          { name: '张三', selectedValue: '1' },
          { name: '李四', selectedValue: '2' }
        ],
        selected: []  // 需要定义一个数组存储每个Select组件的选中值
      }
    },
    methods: {
      handleChange(index) {
        this.setSelectedValue(index, this.selected[index]);
      },
      setSelectedValue(index, value) {
        // 在设置选中值时,需要先更新属性中绑定的数组,再手动触发change事件
        this.$set(this.tableData[index], 'selectedValue', value);
        this.$nextTick(() => {
          this.$refs.select[index].$emit('change', value);
        });
      }
    },
    mounted() {
      // 在mounted钩子中获取第一个option,并设置Select的value属性
      this.$nextTick(() => {
        this.setSelectedValue(0, '1');
      });
    }
  };
</script>

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/288688.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-24 03:00
下一篇 2024-12-24 03:00

相关推荐

  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python字符串宽度不限制怎么打代码

    本文将为大家详细介绍Python字符串宽度不限制时如何打代码的几个方面。 一、保持代码风格的统一 在Python字符串宽度不限制的情况下,我们可以写出很长很长的一行代码。但是,为了…

    编程 2025-04-29
  • Python基础代码用法介绍

    本文将从多个方面对Python基础代码进行解析和详细阐述,力求让读者深刻理解Python基础代码。通过本文的学习,相信大家对Python的学习和应用会更加轻松和高效。 一、变量和数…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • 仓库管理系统代码设计Python

    这篇文章将详细探讨如何设计一个基于Python的仓库管理系统。 一、基本需求 在着手设计之前,我们首先需要确定仓库管理系统的基本需求。 我们可以将需求分为以下几个方面: 1、库存管…

    编程 2025-04-29
  • Python初学者指南:第一个Python程序安装步骤

    在本篇指南中,我们将通过以下方式来详细讲解第一个Python程序安装步骤: Python的安装和环境配置 在命令行中编写和运行第一个Python程序 使用IDE编写和运行第一个Py…

    编程 2025-04-29
  • 写代码新手教程

    本文将从语言选择、学习方法、编码规范以及常见问题解答等多个方面,为编程新手提供实用、简明的教程。 一、语言选择 作为编程新手,选择一门编程语言是很关键的一步。以下是几个有代表性的编…

    编程 2025-04-29
  • Python实现简易心形代码

    在这个文章中,我们将会介绍如何用Python语言编写一个非常简单的代码来生成一个心形图案。我们将会从安装Python开始介绍,逐步深入了解如何实现这一任务。 一、安装Python …

    编程 2025-04-29
  • 怎么写不影响Python运行的长段代码

    在Python编程的过程中,我们不可避免地需要编写一些长段代码,包括函数、类、复杂的控制语句等等。在编写这些代码时,我们需要考虑代码可读性、易用性以及对Python运行性能的影响。…

    编程 2025-04-29
  • 北化教务管理系统介绍及开发代码示例

    本文将从多个方面对北化教务管理系统进行介绍及开发代码示例,帮助开发者更好地理解和应用该系统。 一、项目介绍 北化教务管理系统是一款针对高校学生和教职工的综合信息管理系统。系统实现的…

    编程 2025-04-29

发表回复

登录后才能评论