VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析


Posted in Javascript onDecember 02, 2019

本文实例讲述了VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法。分享给大家供大家参考,具体如下:

业务场景

我们在使用vue 编写 代码时,我们有一个 多行文本框控件,希望在页面点击一个按钮 在 文本框焦点位置插入一个 {pk}的数据。

发现插入 这个数据后,这个数据并没有同步到 数据中,但是直接通过键盘输入,就可以改变数据。

原因分析

在通过 JS 修改控件的value 数据后,并没有触发到数据更新。

解决办法

Vue.component('rx-textarea', {
 props: {
  value:[String,Number],
  cols: {
   type: Number,
   default: 60
  },
  rows: {
   type: Number,
   default: 4
  }
 },
 data() {
  return {
   curVal:this.value
  }
 },
 template: "<div><textarea class='rx-textarea' v-model='curVal' @focus='focus(event)' :cols='cols' :rows='rows' @blur='change(event)' ></textarea></div>",
 methods:{
  change:function(e){
   this.$emit('input', e.target.value);
  },
  focus:function(e){
   this.$emit('myfocus', e);
  }
 },
 watch: {
  curVal: function (val, oldVal){
   this.$emit('input', this.curVal);
  },
  value :function(val,oldVal){
   if(val!=oldVal){
    this.curVal=this.value;
   }
  }
 }
})

当文本框获取焦点时,我们发布一个 myfocus 控件,我们在使用这个控件的时候。

<rx-textarea @myfocus="getTextarea" v-model="item.sql"></rx-textarea>

编写一个 getTextarea 的方法。

var curTextarea=null;
function getTextarea(e){
 curTextarea= e.target;
}

这里将文本框控件,抛出来,我们可以通过 js代码修改这个控件的value。

function insertPK(){
 $.insertText(curTextarea,"{pk}")
}

通过这个代码我们往焦点处插入我们的代码。

当文本框失去焦点时,将当前控件的值作为 input 事件进行发布,从而实现了数据的同步。

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
javascript中的107个基础知识收集整理 推荐
Mar 29 Javascript
jquery删除指定子元素代码实例
Jan 13 Javascript
jquery仿百度百科底部浮动导航特效
Aug 08 Javascript
Bootstrap精简教程
Nov 27 Javascript
JS简单获取当前年月日星期的方法示例
Feb 07 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
May 09 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
Jul 23 jQuery
vue-quill-editor+plupload富文本编辑器实例详解
Oct 19 Javascript
vue中使用codemirror的实例详解
Nov 01 Javascript
小程序使用watch监听数据变化的方法详解
Sep 20 Javascript
axios如何取消重复无用的请求详解
Dec 15 Javascript
解决vue-router 切换tab标签关闭时缓存问题
Jul 22 Javascript
vue 动态表单开发方法案例详解
Dec 02 #Javascript
vue 开发之路由配置方法详解
Dec 02 #Javascript
vue 开发企业微信整合案例分析
Dec 02 #Javascript
vue 使用外部JS与调用原生API操作示例
Dec 02 #Javascript
node使用mysql获取数据库数据中文乱码问题的解决
Dec 02 #Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 #Javascript
angular8和ngrx8结合使用的步骤介绍
Dec 01 #Javascript
You might like
PHP MSSQL 存储过程的方法
2008/12/24 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
php构造函数的继承方法
2015/02/09 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
调试php程序的简单步骤
2019/10/04 PHP
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
对table和ul实现js分页示例分享
2014/02/24 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
Python微信公众号开发平台
2018/01/25 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
python实现弹窗祝福效果
2019/04/07 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
给酒店员工的表扬信
2014/01/11 职场文书
酒店经理职责
2014/01/30 职场文书
有创意的广告词
2014/03/18 职场文书
操行评语大全
2014/04/30 职场文书
财务部绩效考核方案
2014/05/04 职场文书
学习党的群众路线对照检查材料
2014/09/29 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
详解MySQL的Seconds_Behind_Master
2021/05/18 MySQL
Java spring单点登录系统
2021/09/04 Java/Android