解决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 相关文章推荐
input的focus方法使用
Mar 13 Javascript
jQuery制作效果超棒的手风琴折叠菜单
Apr 03 Javascript
javascript禁止访客复制网页内容的实现代码
Aug 05 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
Feb 20 Javascript
JS实现加载和读取XML文件的方法详解
Apr 24 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
May 16 Javascript
angular2 组件之间通过service互相传递的实例
Sep 30 Javascript
JavaScript设计模式之责任链模式实例分析
Jan 16 Javascript
构建大型 Vue.js 项目的10条建议(小结)
Nov 14 Javascript
Node.js实现批量下载图片简单操作示例
Jan 18 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
Sep 28 Javascript
Vue项目打包、合并及压缩优化网页响应速度
Jul 07 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图片验证码实例
2014/03/21 PHP
PHP通过API获取手机号码归属地
2015/05/28 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
PHP生成短网址方法汇总
2016/07/12 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
ExtJS 2.0实用简明教程 之ExtJS版的Hello
2009/04/29 Javascript
Javascript this指针
2009/07/30 Javascript
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
2015/05/11 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
深入浅析JS Function()构造函数
2016/08/22 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
Pyramid添加Middleware的方法实例
2013/11/27 Python
Python实现方便使用的级联进度信息实例
2015/05/05 Python
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
Django封装交互接口代码
2020/07/12 Python
CSS3正方体旋转示例代码
2013/08/08 HTML / CSS
如何开启linux的ssh服务
2013/06/03 面试题
物业管理公司实习生自我鉴定
2013/09/19 职场文书
消防先进事迹材料
2014/02/10 职场文书
法人授权委托书
2014/04/03 职场文书
服务承诺书怎么写
2014/05/24 职场文书
计算机毕业大学生求职信
2014/06/26 职场文书
党员群众路线对照检查材料思想汇报
2014/09/17 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
Windows7下FTP搭建图文教程
2022/08/05 Servers