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 相关文章推荐
jquery keypress,keyup,onpropertychange键盘事件
Jun 25 Javascript
Jquery为a标签的href赋值实现代码
May 03 Javascript
JS数组的赋值介绍
Mar 10 Javascript
javascript中createElement的两种创建方式
May 14 Javascript
JavaScript实现定时隐藏与显示图片的方法
Aug 06 Javascript
javascript的理解及经典案例分析
May 20 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
Sep 05 Javascript
js仿淘宝商品放大预览功能
Mar 15 Javascript
js实现简单数字变动效果
Nov 06 Javascript
JS中比较两个Object数组是否相等方法实例
Nov 11 Javascript
详解javascript中var与ES6规范中let、const区别与用法
Jan 11 Javascript
Vue $attrs &amp; inheritAttr实现button禁用效果案例
Dec 07 Vue.js
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 身份验证方面的函数
2009/10/11 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
php接口隔离原则实例分析
2019/11/11 PHP
js传值 判断
2006/10/26 Javascript
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
JavaScript Event学习第九章 鼠标事件
2010/02/08 Javascript
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
javascript实现二叉树的代码
2017/06/08 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
jquery简单实现纵向的无缝滚动代码实例
2019/04/01 jQuery
vue.js iview打包上线后字体图标不显示解决办法
2020/01/20 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
python面向对象法实现图书管理系统
2019/04/19 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
护士自我介绍信
2014/01/13 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
2014年有孩子的离婚协议书范本
2014/10/08 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers