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

下面是详细的解释。

背景

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日

相关文章

  • 如何用Idea或者webstorm跑一个Vue项目(步骤详解)

    下面是详细讲解如何用Idea或者Webstorm跑一个Vue项目的完整攻略。 步骤一:安装Node.js Vue.js是一个构建用户界面的渐进式框架,它依赖于Node.js。因此,第一步是在你的电脑上安装Node.js。如果你还没有安装Node.js,可以通过Node.js官方网站(https://nodejs.org/en/)进行下载和安装。 步骤二:安装…

    Vue 2023年5月27日
    00
  • npm install安装报错的几种常见情况

    以下是关于npm install安装报错的几种常见情况的攻略。 1. 版本兼容问题 当我们使用 npm install 安装依赖时,npm 会尝试找到最新或符合版本约束的依赖版本,并自动安装。但是,有时候我们会遇到版本兼容问题而导致安装报错。比如: ERROR: Failed to download Chromium r818858! Set "P…

    Vue 2023年5月28日
    00
  • vue3.0安装Element ui及矢量图使用方式

    下面是详细讲解“vue3.0安装Element ui及矢量图使用方式”的完整攻略。 Vue3.0安装Element UI Element UI是一套基于Vue.js 2.0的UI框架,提供了大量的组件和样式。下面是安装Element UI的步骤: 步骤一:安装Element UI 可以使用npm来安装Element UI,在命令行中输入以下命令: npm i…

    Vue 2023年5月28日
    00
  • 在 Vue.js中优雅地使用全局事件的方法

    在 Vue.js 中,全局事件可以在不同组件之间传递信息。但是如果使用不合适,会导致代码变得混乱和难以维护。下面让我们看一下如何优雅地使用 Vue.js 中的全局事件。 什么是全局事件 在 Vue.js 中,我们可以使用自定义事件系统来在不同组件之间传递信息。在根组件中使用 $emit 方法触发自定义事件,在其他组件中使用 $on 监听自定义事件。 全局事件…

    Vue 2023年5月28日
    00
  • vue中复用vuex.store对象的定义

    在Vue项目中,我们通常使用Vuex库来管理应用中的状态。这使得我们可以更方便地在组件之间共享数据和状态。有时候,我们需要在不同的组件中复用Vuex的store对象,以实现跨组件访问和修改共享状态的目的。这个过程可以通过以下步骤完成: 1.定义Vuex的store对象 在Vue应用中,我们通常会在一个单独的js文件中定义Vuex的store对象。这个对象包含…

    Vue 2023年5月28日
    00
  • Vue表单输入绑定的示例代码

    Vue表单输入绑定是Vue.js框架中的一个非常常用的功能,它可以让你通过双向数据绑定的方式更加轻松地处理表单输入和提交。 下面,我将为你展示Vue表单输入绑定的完整攻略,包括示例代码和说明。 示例代码 首先,我们来看一个简单的示例代码,该代码展示了如何使用v-model指令将表单输入与Vue实例中的数据进行绑定: <div id="app&…

    Vue 2023年5月27日
    00
  • vue3获取url地址参数的示例详解

    首先我们来介绍下如何获取URL地址参数。在Vue 3中,可以通过$router对象获取到路由信息,进而获取URL地址参数。 假设我们的路由路径为:/user/:id,则我们可以通过以下方式获取路由参数id的值: this.$route.params.id 其中,this代表Vue实例对象。 接下来,我们分别使用两个实例来说明如何获取URL地址参数。 示例一:…

    Vue 2023年5月27日
    00
  • vue项目每30秒刷新1次接口的实现方法

    实现Vue项目每30秒刷新1次接口可以通过以下步骤完成: 安装axios库 可以通过以下命令安装axios: npm install axios –save 在Vue项目中创建一个Data对象来保存需要更新的数据 data() { return { data: [] } } 在Vue的Mounted生命周期钩子函数中初始化请求数据 mounted() { …

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