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日

相关文章

  • Vue mockjs编写假数据并请求获取实现流程

    Vue MockJS是一款用于前端mock数据的工具。其可以模拟请求API返回假数据,用于前端开发时进行数据调试、测试。本文将详细介绍Vue MockJS编写假数据并请求获取的实现流程。 1. 安装Vue MockJS 在使用Vue MockJS之前,需要确保在项目中已经安装了Vue,接着可以通过npm或yarn来安装Vue MockJS。 # 使用npm进…

    Vue 2023年5月28日
    00
  • 基于node+vue实现简单的WebSocket聊天功能

    下面我来详细讲解“基于node+vue实现简单的WebSocket聊天功能”的完整攻略。 前置知识 在开始之前,需要了解一些基础知识: WebSocket:是一种基于 TCP 协议的新型网络协议,可以实现双向通信。 Node.js:一个基于Chrome V8引擎的JavaScript运行环境。 Vue.js:一个构建用户界面的渐进式框架。 npm:Node.…

    Vue 2023年5月28日
    00
  • 深入理解Vue transition源码分析

    深入理解Vue transition源码分析 1. 什么是Vue transition? Vue的过渡系统提供了一种为Vue添加CSS类和执行JavaScript钩子的方法。Vue会在插入、更新或删除元素时自动应用过渡效果。过渡可以是简单的CSS过渡,也可以是JS动画,以及混合式的过渡。 Vue的过渡系统是通过Vue的transition组件来实现的。该组件…

    Vue 2023年5月28日
    00
  • vue组件实现移动端九宫格转盘抽奖

    实现移动端九宫格转盘抽奖的过程可以分为以下几步: 创建Vue组件:首先需要创建一个Vue组件来实现转盘抽奖功能。通过Vue组件,可以将转盘抽奖功能的代码模块化,并加入响应式处理、生命周期等Vue特性。 实现转盘转动效果:要让九宫格转盘能够转动,需要控制该组件中的转盘图片的旋转角度。可以通过CSS3动画或JavaScript来实现转盘旋转效果。 实现抽奖逻辑:…

    Vue 2023年5月29日
    00
  • 如何用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
  • VUE DEMO之模拟登录个人中心页面之间数据传值实例

    我们来详细讲解一下“VUE DEMO之模拟登录个人中心页面之间数据传值实例”。 简介 在Vue框架中,不同页面之间的数据传值是常见的操作。本文就介绍一种实现模拟登录个人中心页面之间数据传值的方法。通过这种方法,可以更好地理解在Vue中如何实现不同页面之间的数据传值。 实现过程 准备工作 首先,需要准备好Vue.js和Vue-Router两个库。可以使用npm…

    Vue 2023年5月27日
    00
  • Vue动态样式绑定实例详解

    下面我来详细讲解一下“Vue动态样式绑定实例详解”的完整攻略。 什么是Vue动态样式绑定 Vue动态样式绑定可以让我们根据Vue实例的数据来动态绑定一个或多个样式。这样,在数据改变时,与之相关联的样式也会随之改变,从而实现一个动态的页面。 如何使用Vue动态样式绑定 Vue动态样式绑定可以使用v-bind:style或:style指令来绑定一个或多个样式。它…

    Vue 2023年5月27日
    00
  • vue+axios实现post文件下载

    下面是 vue+axios 实现 post 文件下载的攻略: 1. 前置条件 在进行 post 文件下载的功能实现之前,需要确保你已经安装了以下依赖: Vue.js:用于前端开发 axios:用于网络请求 file-saver:用于文件下载 如果还没有安装,可以使用以下命令进行安装: npm install vue axios file-saver –sa…

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