位置: IT常识 - 正文

(详解)Vue设置select下拉框的默认选项(解决select空白的bug)(vue0)

编辑:rootadmin
(详解)Vue设置select下拉框的默认选项(解决select空白的bug)

推荐整理分享(详解)Vue设置select下拉框的默认选项(解决select空白的bug)(vue0),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vuez,vueemit,vue小技巧,vue小技巧,vue 怎么调试,vue 怎么调试,vue怎么配置,vue设置rem,内容如对您有帮助,希望把文章链接给更多的朋友!

最近在用vue设置表单数据时发现了一个小问题:用vue动态渲染select下拉框时,select下拉框会出现空白的bug。

<template> <div> <select name="art-cate" v-model="select"> <option disabled selected style="display: block;">请选择您的科目</option> <option v-for="(item,index) in arr " :key="index" :value="item.name">{{item.name}}</option> </select> </div></template><script>export default { data() { return { arr: [{ name: '语文' }, { name: '数学' }, { name: '英语' }], select:'' } }</script>

Bug如下:

明明有一个selected的option选项,为什么会是一片空白呢?其实原因很简单,就一句话:<select>的v-model变量是空的。

这句话一出可能很多人都恍然大悟了,v-model指令是双向数据流动,vue变量没有值,那么select框当然也是空白的喽。 

可是另一个问题来了,为什么其他的表单不会这样呢?

单选框、多选框和输入框虽然默认都是没有值的,但是它们没有值也不会影响它们的表现形式,因为它们本来就可以是空白的,只有 <select> 标签不行,必须要有一个值才可以。所以我们可能会忽略这点,忘了给 v-model 绑定的变量赋值,结果就是select标签是一片空白。

解决方法很简单:就是把v-model绑定的变量赋值即可。

select:'请选择您的科目' // select是 <select>标签 双向绑定的变量(详解)Vue设置select下拉框的默认选项(解决select空白的bug)(vue0)

到此为止,好像事件已经结束了,bug已经没有了,然鹅还有一个小问题:

当你输入完全正确的字符串时,select当然一切正常,然而如果你输入的是一些乱七八糟的字符时,select仍然是一片空白。

select:'乱七八糟的sdsdf'

效果图:

这是因为select绑定的vue变量必须和option中的value值绝对对应,否则就不会显示option的文本元素。

那为什么输入 "请选择您的科目" 就能显示出来呢?我明明没有给这个option指定value值啊,

原因是:select的某个option标签在没有指定value值时,option默认会把标签内的文本内容当做自己的value值。

所以我们输入的看似是 "请选择您的科目" ,实际上输入的是 第一个option的value值,所以select标签就显示出来第一个option的文本内容啦。

这也会引出这个bug的另一个触发方式:当我们从后端接收到的value值为undefined时,我们将其渲染到select标签上,也会引发<select>标签显示空白的bug,因为没有哪个option的value值是undefined的。

但同时,我们也可以利用这个特性,手动的把第一个option的值设置为空,那么即使vue变量没有设置初识值,那么也会显示出来第一个option的文本内容。

<option value="">请选择您的科目</option>

此时即使与<select>绑定的变量为 ' ' ,也能显示出来这个option的文本内容了。

至此,有关于vue和select空白的bug就讲解完毕咯,总结如下:

之所以用v-model绑定的<select>标签显示空白,是因为vue变量 没有指定默认值;其他表单元素不需要指定变量的默认值,是因为它们本来就可以是空白的。解决方法有二:一、设置变量的默认值  二、设置默认的option的value值为空字符串   当我们给vue变量一个指定的默认值,但该值无法和任何option的value值对应时,<select>标签仍然会显示一片空白,与<select>绑定的变量的值,必须要为某个option的value值才行!因为只有这样,<select>标签才能显示出option的文本内容。没有指定value值的option,其文本内容会自动成为这个option的value值。

上面的东西希望对你有所帮助,我的绊脚石专栏中还有一些前端方面的小坑,前端的知识琐碎细小,然而编程容不得半点马虎,有时候我们不小心掉进去,钻上牛角尖能耗费大半天的时间,初学前端的小白可以多来我的专栏中看看哦,防止掉坑,以便能在通向前端大神的路上风驰电掣、疾行飞奔。

本文链接地址:https://www.jiuchutong.com/zhishi/297500.html 转载请保留说明!

上一篇:93.transformer、多头注意力以及代码实现

下一篇:为什么那么多人转行编程都首选Java(为什么那么多人考公务员)

  • 不征税收入确认递延收益如何填报
  • 开票税金和实际交的税金差额怎么办
  • 小规模季度30万免税
  • 结转本月发生的费用
  • 残疾人保障金的计算方法
  • 会计凭证前面放什么
  • 应交税费明细分类账
  • 购土地契税怎么算
  • 出售无形资产的净损失
  • 票据和结算凭证上的签章
  • 公司支付宝扣的钱去哪了
  • 劳务报酬申报个税后还需要开发票吗
  • 小规模纳税人工资可以抵扣增值税吗
  • 房租当月无发票怎么办
  • 生产车间计提折旧分录
  • 车辆固定资产清理
  • 残疾人收到房租租赁发票收入还要缴纳个税吗
  • 普通发票冲红的限制几张以上
  • 进口原木的增值税率
  • 计算房产税租金会计分录
  • 装修工程需要预缴吗
  • 出售原材料属于营业收入吗
  • 第一次申领发票可以增额吗?
  • 无偿赠送资产需要交哪些税
  • 应收款项包括哪些内容,各自有何特点?
  • 电信apn接入点设置+最快
  • 利润分配会计处理时间
  • 金融服务的手续费要交税吗
  • win10右键菜单管理在哪打开
  • 物业管理费发票图片
  • php 上传
  • 投影仪哪种光源亮度高
  • php生成二维码源码
  • 研发费用如何加计扣除何时申报
  • 固定资产清理税务处理
  • 股权转让有溢价怎么做账
  • vue设置宽度
  • 附加税从哪里进去申报
  • 红字增值税发票怎么开具图解
  • 餐费进什么科目
  • 技术部周报怎么写
  • zenity命令 显示图形框
  • 购买超市购物卡会计分录
  • phpcms二次开发教程
  • 购买方已认证怎么开具红字信息表
  • 进项发票是专票吗
  • 老板出差司机住哪
  • 删除mysql数据库用户
  • 暂估入库账务处理举例
  • 小微企业应纳税所得额100万到300万怎么计算
  • 售后租回承租人怎么处理
  • 税务局收款收据
  • 小规模纳税人预交增值税率
  • 收到采购免费赔偿怎么办
  • 本月多交的增值税
  • 发票隔年还能做账吗
  • 固定资产清理的税率是多少
  • mysql 启动报错
  • 移动u盘的作用
  • windows8.1安装windows7
  • linux命令的参数
  • win10系统将IIS服务器发送到桌面快捷方式方法
  • cocos2dx视频教程
  • cocos2dx4.0教程
  • javascript编程规范
  • 安卓textview设置文本
  • 一个监控网卡流量够用吗
  • Node.js中的construct构造函数
  • Python搭建HTTP服务器和FTP服务器
  • jquery获取元素css
  • node 回调函数
  • Python遍历文件夹中的图片
  • javascript的核心组成部分
  • js简单网速测试方法
  • jquery通配符选择器
  • 河南医疗保险网上怎么缴费截止时间
  • 如何在电子税务局签订三方协议
  • 浙江省国税公务员工资
  • 税务区域代码怎么填
  • 招投标法实施条例是哪一年修正的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设