vue+element开发使用el-select不能回显的处理方案

yizhihongxing

下面是详细的解释。

背景

Vue+Element前端开发中,使用el-select组件时,有时我们需要实现对下拉选项的回显功能。但是实际使用中,发现el-select在使用v-model绑定数据进行回显时存在问题,即无法正确地显示默认值。

原因

这是因为在Vue中,父组件在挂载之前会先于子组件执行,导致el-select还没有加载完,所以无法正确地设置默认值。

处理方案

1.通过value-key将选中的值由对象改为字符串类型。

<el-select v-model="value" placeholder="请选择" :value-key="'name'">
  <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item"></el-option>
</el-select>

在实际使用过程中,需要将value的值由一个对象改为对象中的一个属性值,比如name。这样即可通过设置value-key将选中的值由对象类型变为字符串类型。

2.通过v-ifv-else延迟el-select的加载

<el-select v-if="options.length" v-model="value" placeholder="请选择">
  <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item"></el-option>
</el-select>
<el-select v-else placeholder="请选择"></el-select>

该方法通过将el-select注入到v-if中,只有在选项列表加载完毕后才会触发el-select的挂载。可以实现正确的回显效果。

需要注意的是,如果选项列表特别长,并不推荐使用此方法,因为这样会影响页面加载速度。

示例说明

1.使用value-key解决el-select回显问题

<template>
  <div>
    <el-select v-model="selected" :multiple="true" :value-key="'name'" placeholder="请选择">
      <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item"></el-option>
    </el-select>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selected: [{ id: 2, name: '选中的值' }],
      options: [
        { id: 1, name: '选项1' },
        { id: 2, name: '选项2' },
        { id: 3, name: '选项3' }
      ]
    }
  }
}
</script>

在使用v-model绑定选中的值时,需要将value的值改为选项对象中的一个属性,这里是name,并且在el-select中添加value-key="name"即可。

2.使用v-ifv-else解决el-select回显问题

<template>
  <div>
    <el-select v-if="options.length" v-model="selected" placeholder="请选择">
      <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item"></el-option>
    </el-select>
    <el-select v-else placeholder="请选择"></el-select>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selected: { id: 2, name: '选中的值' },
      options: []
    }
  },
  mounted() {
    this.options = [
      { id: 1, name: '选项1' },
      { id: 2, name: '选项2' },
      { id: 3, name: '选项3' }
    ]
  }
}
</script>

在数据加载完成之前,将el-select注入到v-else中,等待数据加载完毕后再注入到v-if中即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue+element开发使用el-select不能回显的处理方案 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue中在data里面调用method方法的实现

    在Vue中,我们可以在组件的data选项中定义数据,并且我们可以使用methods来定义方法。通常情况下,我们使用methods中的方法来操作组件数据。但是,有时我们需要在data中调用methods的方法。这时,可以使用this.$options.methods来访问methods中定义的方法。 下面是Vue中在data里面调用method方法的实现的完整…

    Vue 2023年5月28日
    00
  • Node.js EventEmmitter事件监听器用法实例分析

    让我来详细讲解“Node.js EventEmmitter事件监听器用法实例分析”的完整攻略。 什么是EventEmitter 在Node.js中,EventEmitter是一个非常重要的模块,它是Node.js最核心的基础模块之一,EventEmitter模块是专门用来处理事件的,事件以一种观察者模式为基础,通过定义和触发事件来实现代码之间的松耦合。 Ev…

    Vue 2023年5月28日
    00
  • Vue中data数据初始化方法详解

    下面是关于“Vue中data数据初始化方法详解”的完整攻略。 Vue中data数据初始化方法详解 Vue中data初识 在Vue中,我们经常会使用data属性来存储组件中的数据,在组件创建时会把data中定义的数据预先初始化。 Vue.component(‘example’, { data() { return { foo: ‘bar’ } } }) 在这个…

    Vue 2023年5月28日
    00
  • 详解Vue2.5+迁移至Typescript指南

    详解Vue2.5+迁移至Typescript指南 本文将介绍如何将Vue 2.5应用从JavaScript迁移到TypeScript。本文的内容适用于Vue应用的所有组件和工具。 Step 1:安装TypeScript 我们需要在本地安装TypeScript, 使用以下命令: npm install -g typescript Step 2:将js更改为ts…

    Vue 2023年5月28日
    00
  • vue.js基于ElementUI封装了CRUD的弹框组件

    让我来给你详细讲解一下vue.js基于ElementUI封装了CRUD的弹框组件的完整攻略。 简介 CRUD是指增加(Create)、读取(Read)、更新(Update)和删除(Delete),是Web应用程序中最常见的操作,几乎每个网站都会用到。因此,为了提高开发效率,很多框架都提供了CRUD的封装组件,vue.js也不例外。本文主要介绍vue.js基于…

    Vue 2023年5月28日
    00
  • VUE中的自定义指令钩子函数讲解

    对于Vue中的自定义指令,钩子函数是其中一个重要的组成部分,它可以让我们在指令的生命周期中进行一些特定的操作。Vue提供了一组常用的钩子函数可以用来响应指令生命周期内的不同阶段;同时我们也可以自定义指令钩子函数来实现特定的需求。 下面我们来看一下Vue中自定义指令的钩子函数: bind钩子函数 bind钩子函数在指令绑定到元素上时被调用,只会调用一次。通常可…

    Vue 2023年5月28日
    00
  • 每天学点Vue源码之vm.$mount挂载函数

    讲解“每天学点Vue源码之vm.$mount挂载函数”的完整攻略。 什么是vm.$mount挂载函数? vm.$mount 是 Vue 实例的 $mount() 函数,用于把Vue实例挂载到页面中的元素上。该函数有两种使用方式: 1.手动挂载 在手动挂载时,可以通过引入 Vue.js,创建 Vue 实例并手动挂载到一个DOM上。具体代码如下: <!–…

    Vue 2023年5月28日
    00
  • vue开发之moment的介绍与使用

    Vue开发之Moment的介绍与使用 Moment.js介绍 Moment.js是一个专门用来解析、显示和操作日期时间数据的JavaScript库,提供了各种格式化、时间计算、日期相差、本地化和持续时间等功能,非常实用。 Moment.js可以用在浏览器端和Node.js环境下,可以通过npm或直接引入CDN来使用。同时,Moment.js也支持在Vue和其…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部