解决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 相关文章推荐
javascript 页面只自动刷新一次
Jul 10 Javascript
javascript基础知识大集锦(一) 推荐收藏
Jan 13 Javascript
Javascript实现重力弹跳拖拽运动效果示例
Jun 28 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
Aug 13 Javascript
javascript实现checkbox全选的代码
Apr 30 Javascript
js从输入框读取内容,比较两个数字的大小方法
Mar 13 Javascript
Angular2实现自定义双向绑定属性
Mar 22 Javascript
利用nvm管理多个版本的node.js与npm详解
Nov 02 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
Jan 06 jQuery
Vue中控制v-for循环次数的实现方法
Sep 26 Javascript
spring+angular实现导出excel的实现代码
Feb 27 Javascript
vue el-table实现递归嵌套的示例代码
Aug 14 Vue.js
微信小程序使用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 visitFile()遍历指定文件夹函数
2010/08/21 PHP
php生成二维码的几种方式整理及使用实例
2013/06/03 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
学习php中的正则表达式
2014/08/17 PHP
Web程序工作原理详解
2014/12/25 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
javascript对象的使用和属性操作示例详解
2014/03/02 Javascript
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
JavaScript实现简单的数字倒计时
2015/05/15 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
JS实现点餐自动选择框(案例分析)
2019/12/10 Javascript
Vue引入Stylus知识点总结
2020/01/16 Javascript
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
Python实现将DOC文档转换为PDF的方法
2015/07/25 Python
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
Python实现K折交叉验证法的方法步骤
2019/07/11 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
模具专业自荐信
2014/05/29 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers
Python基于百度API识别并提取图片中文字
2021/06/27 Python
mysql脏页是什么
2021/07/26 MySQL