解决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方法中返回多个值的方法汇总
May 20 Javascript
jQuery菜单插件用法实例
Jul 25 Javascript
AngularJS 如何在控制台进行错误调试
Jun 07 Javascript
JS中传递参数的几种不同方法比较
Jan 20 Javascript
javascript设计模式之单体模式学习笔记
Feb 15 Javascript
AngularJS中的路由使用及实现代码
Oct 09 Javascript
webstorm和.vue中es6语法报错的解决方法
May 08 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
Aug 24 Javascript
详解JavaScript 浮点数运算的精度问题
Jul 23 Javascript
JS操作字符串转数字的常见方法示例
Oct 29 Javascript
Vue 使用beforeEach实现登录状态检查功能
Oct 31 Javascript
Nuxt的动态路由和参数校验操作
Nov 09 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 获取文件权限函数介绍
2013/07/11 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
Smarty模板变量调节器用法分析
2016/05/23 PHP
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
js浮动图片的动态效果
2013/07/10 Javascript
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
2016/10/15 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
使用Python实现博客上进行自动翻页
2017/08/23 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2019/06/21 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
python next()和iter()函数原理解析
2020/02/07 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
使用tkinter实现三子棋游戏
2021/02/25 Python
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
英国最大的在线床超市:Bed Star
2019/01/24 全球购物
安全生产演讲稿
2014/05/09 职场文书
金融管理专业求职信
2014/07/10 职场文书
教师旷工检讨书
2015/08/15 职场文书
节约用水广告语60条
2019/11/14 职场文书
导游词之蜀山胜景瓦屋山
2019/11/29 职场文书
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers