vue的el-select绑定的值无法选中el-option问题及解决

目录
  • el-select绑定的值无法选中el-option问题
  • vue el-select 2个下拉框联动时产生的无法选中值的bug
    • 问题描述

el-select绑定的值无法选中el-option问题

框架vue-element-ui中的select绑定值v-model无法自动选中option的问题

代码如下:

<template>
 <el-select v-model="formData.colorId" placeholder="选择">
   <el-option
     v-for="item in colorOptions"
     :key="item.id"
     :label="item.name"
     :value="item.id">
   </el-option>
 </el-select>
<template>
<script>
colors = {
 "1": "黄",
 "2": "红",
 "3": "绿"
}
export default {
  data() {
      return {
          formData:{ colorId: 2 },
          colorOptions: obj2Array(colors)
    }
  }
}
function obj2Array(obj){
  const arr = []
  for(let key in obj){
    arr.push({id:key, name: obj[key]})
  }
  return arr
}
</script>

发现无法自动选中红色,而是直接显示2,这是什么问题呢。

原来是obj2Array这个方法的问题,在重构为数组时,key是字符直接给到id,而colorId是数值,所以无法匹配。

正解:

function obj2Array(obj){
  const arr = []
  for(let key in obj){
    arr.push({id:Number(key), name: obj[key]})
  }
  return arr
}

vue el-select 2个下拉框联动时产生的无法选中值的bug

问题描述

做项目时用了2个el-select下拉框,一个下拉框选择学校,一个下拉框选择专业,专业的数据源是根据学校的选择来动态改变的,由于后台没有写成树的形式,所以写了2个下拉框进行联动。

这里就有一个问题:学校改变后,虽然专业的数据源发生了变化,但是原来的专业绑定值并没有清空,所以我在此就手动清空了专业的值。

这是就有了这个奇怪的问题,学校改变后,原来的专业绑定值虽然清空了,但是却无法选中了。

解决办法1:使用 this.$set 来设置变量的值,让视图重新render

在学校的值改变时,清空原专业值时用$set(),而不是直接赋值为空。

schoolChange (value) {
    // this.form.specialtyid=''
    this.$set(this.form, 'specialtyid', '')
    
    if (!value) {
      this.specialtyList = []
    } else {
      this.GetspecialtynList(value)
    }
},

解决办法2:直接声明specialtyid变量

另一种解决办法,就是将specialtyid的值,直接写到data里,el-select绑定值也直接使用specialtyid,而不是使用form.specialtyid,此时再清空specialtyid的值就可以直接赋值了

解决办法3:给专业的el-select添加@change事件

        <el-select v-model="form.specialtyid" @change="specChange">
            <el-option
              v-for="item in specialtyList"
              :label="item.orgname"
              :key="item.orgid"
              :value="item.orgid"
            ></el-option>
        </el-select>
    
        specChange () {
          //强制刷新
          this.$forceUpdate()
        },

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue el-select绑定对象时,回显内容不正确,始终是最后一项的解决

    目录 一.问题描述 二.原因分析和解决方法 三.总结 el-select绑定对象时,回显内容始终是最后一项 一.问题描述 使用el-select组件绑定类型为对象时,回显内容始终为选项的最后一项,但是通过控制台打印的信息却是所选项. 使用代码: <template>   <div class="page-index">     <el-form       :model="ruleForm"       :rules="rul

  • vue里面的el-select绑定默认值方式

    目录 vue的el-select绑定默认值 el-select绑定的值无法选中el-option问题 vue的el-select绑定默认值 vue select下拉框绑定默认值: 首先option要加value值,以便v-model可以获取到对应选择的值 一.当没有绑定v-model,直接给对应的option加selected属性 二.当给select绑定了v-model的值的时候,要给v-model绑定的data值里写默认值 el-select绑定的值无法选中el-option问题 框架vue

  • el-select组件绑定change事件的踩坑记录

    目录 el-select组件绑定change事件踩坑 el-select实现change事件 总结 el-select组件绑定change事件踩坑 要注意区分elementUI组件(比如el-select.el-button.el-input等组件)的focus.click.change等事件和DOM的focus.click.change原生事件,二者是不一样的. 如果要在element组件上触发原生事件,一律都得加.native修饰符,否则无法触发事件. 但是要注意很多elementUI的组件

  • vue中的select绑定多个值

    目录 vue select绑定多个值 vue el-select 绑定id值 vue select绑定多个值 不再通过v-model和value进行绑定 而是通过绑定索引值Index 然后通过定义@input=change方法,通过索引值获取并更新想要绑定的多个值 <el-select v-model="basic_info.itemindex" placeholder=""  @input="change">     <el-

  • Vue 表单输入绑定v-model

    目录 1.v-model 2.绑定的属性和事件 3.表单元素绑定 3.1 input绑定 3.2 textarea绑定 3.3 checkbox绑定 3.4 radio绑定 3.5 select绑定 4.值绑定 4.1 代码详解 5.修饰符 5.1 .lazy 5.2 .number 5.3 .trim 1.v-model v-model指定可以实现表单值与属性的双向绑定.即表单元素中更改了值会自动的更新属性中的值,属性中的值更新了会自动更新表单中的值 2.绑定的属性和事件 v-model在内部

  • php 获取select下拉列表框的值

    给select 表单无素一个名字. 表单提交后 用 $_POST 或 $_GET 方式提交 $_POST['sel']或者$_GET['sel']获得选中的select的value值 复制代码 代码如下: if( $_POST ) { echo $_POST['select']; } ?> <form name="form1" enctype="multipart/form-data" method="post" action=&qu

  • vue select组件绑定的值为数字类型遇到的问题

    目录 select组件绑定的值为数字类型问题 vue中的绑定值 学习重点 select组件绑定的值为数字类型问题 在日常开发中,我们双向绑定的form表单,经常会遇到对数字类型的绑定,但对于v-model 绑定的值,输入数字会自动转成字符串类型. 对于input输入框绑定的值,想要修改为数字类型很简单,只需要使用表单的修饰符就可以.如下所示 number 可以将绑定的 v-model 改为 number 类型 <input v-model.number="age" type=&q

  • vue关于select组件绑定的值为数字类型的问题

    目录 select组件绑定的值为数字类型问题 number可以将绑定的 v-model 改为 number类型 若元素属性需要绑定的值为数字时的处理 1.如果直接这样写 2.解决 select组件绑定的值为数字类型问题 在日常开发中,我们双向绑定的form表单,经常会遇到对数字类型的绑定,但对于v-model 绑定的值,输入数字会自动转成字符串类型. 对于input输入框绑定的值,想要修改为数字类型很简单,只需要使用表单的修饰符就可以. 如下所示: number可以将绑定的 v-model 改为

  • vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案

    场景 今天在使用 v-model 进行组件双向数据绑定的时候遇到了一个奇怪的问题,网页本身运行正常,浏览器一直出现警告信息. [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value

  • 浅谈Vue Element中Select下拉框选取值的问题

    之前写了.一个原生的select的,因为展示效果原因,给删除掉了,忘记保存代码了,现在大家展示使用elementUI的下拉框封装一个组件,供咱们项目中经常调用,减少代码量. html: <el-select v-model="ite" placeholder="请选择" value-key="mateGroup"> <el-option style="width: auto" :disabled="

  • Vue select 绑定动态变量的实例讲解

    概述 根据后台的数据生成多个select,由于数据的数量不定,所以v-model绑定的变量名也不定.所以通过数据的id或者下标进行变量拼接.页面能够成功渲染,但是当进行下拉框的选值时,组件不刷新,选中的结果并没有展示 Code <div v-for="(item, index) in tagAllDate" :key="index"> <el-form-item :label="item.name"> <el-sel

  • 浅谈vue的几种绑定变量的值 防止其改变的方法

    1.Object.freeze(obj)语句 obj={ foo:"nan" } Object.freeze(obj); 用该语句固定变量后,之后对这个变量的更改都会无效,并在console中报错. 2.v-once元素绑定 <span>{{msg}}</span> 当msg数据改变之后span的内容也会当即发生改变,但是如果 <span v-once>{{msg}}</span> 如果加上了v-once绑定那么就算数据中的msg改变sp

随机推荐