vue项目中使用element-ui下拉框选项值为对象时报错

比特霜焰引
• 阅读 9022
在做后台管理时,使用了vue搭配elementUI,请求方法使用了axios插件,在使用下拉框时,因为我需要获取选中的选项中的其他值,因此需要传入对象。对select下拉框的文档没有读的很仔细,百度过几篇文章,也没有理解他们表达的意思,然后自己又去看文档,把他的属性看了几遍,忽然就来了灵感,尝试了一两次,哇,原来是这样做,爽歪歪,真的是书读百遍其义自见

1.elementui中的select下拉框为对象

  • 当select下拉框中的value传入的是对象时,在你没写对属性时,下拉框选中的值就会错乱
<template>
    <el-select v-model="seletedOption" value-key="name" style="width: 72%" placeholder="请选择">
        <el-option
          v-for="item in options"
          :key="item.express"
          :value="item"
          :label="item.name"
        ></el-option>
    </el-select>
</template>
<script>
export default{
    data() {
        return {
            selectedOption: '',
            options: [
                {
                    id: 0,
                    name: '11',
                    title: 'one'
                },
                {
                    id: 1,
                    name: '22',
                    title: 'two'
                }
            ]
        }
    }
}
</script>
  • 官网中下拉框有写这个属性,多读几遍,就有了新的发现
vue项目中使用element-ui下拉框选项值为对象时报错

这个value-key指的是对象中你要渲染或者说是你要选中的键值,是直接写死的,比如:我这里要渲染要选中的就是name对应的值,在我没有设置value-key这个属性但是却直接传入el-option中的value为对象时,发现即使selectedOption为空,他在页面上也有显示值

2.axios中捕获异常信息

  • 开始我直接打印err,发现他打印的信息没有我想要的报错信息,都是些js文件选项
vue项目中使用element-ui下拉框选项值为对象时报错
  • 但是,当你打印err.response时就会有你想要的信息了
.catch(err => {
  console.log(err);
  console.log(err.response);
})

3.关于自定义模态框的布局

  • 以前也有写过自定义模态框,但是有点瑕疵,我没去修改,最近看着elementUI的对话框,终于发现了导致那点瑕疵的原因了
  • 在自定义模态框时,在最外层会有一层半透明的阴影层,我为了里面的内容水平垂直居中,就在这半透明层使用了flex布局,但是,使用后,在浏览器中f12后,然后一直把页面变小,你就发现,模态框的内容被遮挡了,即使有滚动条,也无法滑动至完全看到模态框的内容
  • 所以借鉴elementui中的对话框,不能使用flex布局
/* 最外层 */
.customModal{
  position: fixed;
  overflow-y: scroll;
  width: 100%;
  height: 100vh;
  left: 0;
  top: 0;
  bottom: 0;
  right: 0;
  background: rgba(0, 0, 0, .6);
  z-index: 1000;
}
/* 内容层 */
.modal{
  position: relative;
  margin: 15vh auto 50px;
  width: 600px;
  min-height: 242px;
  background: #fff;
  border-radius: 3px;
}

4.js时间戳

/* new Date()获取的时间戳是以毫秒为单位,我这里后台返回的是以秒为单位 */
let time = Math.floor(new Date() / 1000);

5.利用elementUI中的el-cascader级联选择器来实现地址级联选择

  • el-cascader可以实现二级或者三级地址级联选择
  • 首先使用npm安装element-china-area-dataelement-china-area-data
  • 然后是引入json数据
import { provinceAndCityData, regionData, provinceAndCityDataPlus, regionDataPlus, CodeToText, TextToCode } from 'element-china-area-data'
provinceAndCityData是省市二级联动数据(不带“全部”选项)
regionData是省市区三级联动数据(不带“全部”选项)
provinceAndCityDataPlus是省市区三级联动数据(带“全部”选项)
regionDataPlus是省市区三级联动数据(带“全部”选项)
"全部"选项绑定的value是空字符串""
CodeToText是个大对象,属性是区域码,属性值是汉字 用法例如:CodeToText['110000']输出北京市
TextToCode是个大对象,属性是汉字,属性值是区域码 用法例如:TextToCode['北京市'].code输出110000,TextToCode'北京市'.code输出110100,TextToCode'北京市'['朝阳区'].code输出110105
  • 使用,我这里实现的是地址二级选择
vue项目中使用element-ui下拉框选项值为对象时报错
<template>
  <el-cascader
      style="width: 68%"
      size="large"
      :options="options"
      v-model="selectedCity"
      placeholder="请选择区域"
  ></el-cascader>
</template>
<script>
  import { provinceAndCityData,CodeToText } from 'element-china-area-data'
  export default{
    data() {
      return {
        options: provinceAndCityData,
        selectedCity: [],
      }
    },
    method: {
      handleSelected() {
        /* 这里他返回的是选中的编号,需要进行编号转文字 */
        console.log(CodeToText[this.selectedCity[0]]);
      }
    }
  }
</script>
正在努力学习中,若对你的学习有帮助,留下你的印记呗(点个赞咯^_^)
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Easter79 Easter79
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这