解决vue select当前value没有更新到vue对象属性的问题


Posted in Javascript onAugust 30, 2018

vue是一款轻量级的mvvm框架,追随了面向对象思想,使得实际操作变得方便,但是如果使用不当,将会面临着到处踩坑的危险,写这篇文章的目的是我遇到的这个问题在网上查了半天也没有发现解决方案,最终研究了vue的源码中有关select元素的部分找到了答案,下面简单介绍我踩的关于select的一个坑:

使用场景:有两个select元素,一个select元素变动时,动态修改另一个select中填充的内容,并默认选择第一项,问题来了,每次当我提交form数据时发现:从slave元素对应的数据没有更新到响应vue对象相关属性,奇怪的是当我使用jquery获取该select的val()方法获取的是最新的数据,那么问题就来了:为什么元素的值发生了变动却没有更新到vue对象相关属性?

vue中相关源码:

// attach listener
this.listener = function () {
var value = getValue(el, multiple);
value = self.params.number ? isArray(value) ? value.map(toNumber) : toNumber(value) : value;
self.set(value);
};
this.on('change', this.listener);

看到了吧,只有select的change事件才会触发select元素的value值更新到vue对象相关属性,但我在使用select时从select的内容是我使用js代码追加的,选择第一项也是代码追加,这样就没有触发vue中select的listener 函数,当然这种情况仅仅出现在保存数据时没有改变从select内容而采用默认第一项,所以如果用户选择select的其他项后再切回第一项就可以触发该事件完成vue对象属性变更。

上面的解决方案不够友好,使用者会反感这种操作,那么如何解决呢?

我这里给出我的解决方案:在使用js代码追加内容到从select后,使用更改从select对应的vue对象属性来实现默认选择第一项。

以上这篇解决vue select当前value没有更新到vue对象属性的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS面向对象编程之对象使用分析
Aug 19 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
Sep 10 Javascript
JQuery开发的数独游戏代码
Oct 29 Javascript
Jquery AJAX POST与GET之间的区别
Nov 14 Javascript
jQuery获得指定元素坐标的方法
Apr 14 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
Jul 01 Javascript
JavaScript登录记住密码操作(超简单代码)
Mar 22 Javascript
Vee-Validate的使用方法详解
Sep 22 Javascript
Java设计中的Builder模式的介绍
Mar 22 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
Apr 21 Javascript
tsconfig.json配置详解
May 17 Javascript
搭建一个Koa后端项目脚手架的方法步骤
May 30 Javascript
微信小程序使用wxParse解析html的实现示例
Aug 30 #Javascript
vue中rem的配置的方法示例
Aug 30 #Javascript
Vue2实时监听表单变化的示例讲解
Aug 30 #Javascript
vue-swiper的使用教程
Aug 30 #Javascript
分享vue里swiper的一些坑
Aug 30 #Javascript
详解Vue CLI3 多页应用实践和源码设计
Aug 30 #Javascript
小程序图片长按识别功能的实现方法
Aug 30 #Javascript
You might like
用PHP产生动态的影像图
2006/10/09 PHP
模仿OSO的论坛(一)
2006/10/09 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
如何让页面加载完成后执行js
2013/06/26 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
jQuery基础语法实例入门
2014/12/23 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
Zabbix添加Node.js监控的方法
2016/10/20 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
2018/03/05 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
Python实现的爬取豆瓣电影信息功能案例
2019/09/15 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
VSCode配合pipenv搞定虚拟环境的实现方法
2020/05/17 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
linux比较文件内容的命令是什么
2013/03/04 面试题
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
商场中秋节广播稿
2014/01/17 职场文书
2014高中生入党思想汇报范文
2014/09/13 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
幼师自荐信范文(2016推荐篇)
2016/01/28 职场文书
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL
python 如何执行控制台命令与操作剪切板
2021/05/20 Python