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 相关文章推荐
formValidator3.3的ajaxValidator一些异常分析
Jul 12 Javascript
js自定义鼠标右键的实现原理及源码
Jun 23 Javascript
jQuery使用之设置元素样式用法实例
Jan 19 Javascript
通过伪协议解决父页面与iframe页面通信的问题
Apr 05 Javascript
js简单实现点击左右运动的方法
Apr 10 Javascript
js+HTML5实现视频截图的方法
Jun 16 Javascript
JavaScript中用let语句声明作用域的用法讲解
May 20 Javascript
vue2.0+webpack环境的构造过程
Nov 08 Javascript
老生常谈jacascript DOM节点获取
Apr 17 Javascript
详解Vue路由开启keep-alive时的注意点
Jun 20 Javascript
React 组件渲染和更新的实现代码示例
Feb 21 Javascript
JavaScript实现旋转木马轮播图
Mar 16 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
如何给phpadmin一个保护
2006/10/09 PHP
不用GD库生成当前时间的PNG格式图象的程序
2006/10/09 PHP
html静态页面调用php文件的方法
2014/11/13 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
php打包网站并在线压缩为zip
2016/02/13 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
2016/09/02 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
2017/01/25 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
2019/04/17 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
原生JS实现音乐播放器
2021/01/26 Javascript
[47:03]Ti4第二日主赛事败者组 LGD vs iG 2
2014/07/21 DOTA
Python subprocess库的使用详解
2018/10/26 Python
Python之循环结构
2019/01/15 Python
OpenCV 边缘检测
2019/07/10 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
利用CSS3实现圆角的outline效果的教程
2015/06/05 HTML / CSS
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
世界上最好的儿童品牌:AlexandAlexa
2018/01/27 全球购物
函数指针的定义是什么
2016/08/14 面试题
双创工作实施方案
2014/03/26 职场文书
2015年考研复习计划
2015/01/19 职场文书
佛光寺导游词
2015/02/10 职场文书
宾馆客房管理制度
2015/08/06 职场文书
Python制作动态字符画的源码
2021/08/04 Python