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高级程序设计(第3版)学习笔记 概述
Oct 11 Javascript
js制作简易年历完整实例
Jan 28 Javascript
Bootstrap每天必学之导航
Nov 26 Javascript
js实现跨域的多种方法
Dec 25 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
Oct 03 Javascript
Angular获取手机验证码实现移动端登录注册功能
May 17 Javascript
使用Vue调取接口,并渲染数据的示例代码
Oct 28 Javascript
Vue 图片压缩并上传至服务器功能
Jan 15 Javascript
vue实现图片懒加载的方法分析
Feb 05 Javascript
详解微信小程序工程化探索之webpack实战
Apr 20 Javascript
在vscode 中设置 vue模板内容的方法
Sep 02 Javascript
用JS写一个发布订阅模式
Nov 07 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
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
学习php开源项目的源码指南
2014/12/21 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
PHP导入导出Excel代码
2015/07/07 PHP
thinkPHP实现签到功能的方法
2017/03/15 PHP
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
Javascript中使用parseInt函数需要注意的问题
2015/04/02 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
js 自带的sort() 方法全面了解
2016/08/16 Javascript
js替换字符串中所有指定的字符(实现代码)
2016/08/17 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
Python实现全局变量的两个解决方法
2014/07/03 Python
python2 与python3的print区别小结
2018/01/16 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
HTML5中外部浏览器唤起微信分享功能的代码
2020/09/15 HTML / CSS
英国航空官网:British Airways
2016/09/11 全球购物
时尚圣经:The Fashion Bible
2019/03/03 全球购物
周年庆典主持词
2014/04/02 职场文书
国旗下的演讲稿
2014/05/08 职场文书
四年级数学教学反思
2016/02/16 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
Python使用scapy模块发包收包
2021/05/07 Python
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL