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的页面划词搜索JS
Sep 14 Javascript
$.getJSON在IE下失效的原因分析及解决方法
Jun 16 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
Dec 21 Javascript
js实现网页定位导航功能
Mar 07 Javascript
JavaScript实现实时更新系统时间的实例代码
Apr 04 Javascript
Bootstrap模态框插入视频的实现代码
Jun 25 Javascript
详解webpack3编译兼容IE8的正确姿势
Dec 21 Javascript
JS改变页面颜色源码分享
Feb 24 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
Jul 05 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
Nov 02 Javascript
微信小程序云函数使用mysql数据库过程详解
Aug 07 Javascript
uniapp微信小程序:key失效的解决方法
Jan 20 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
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
PHP时间格式控制符对照表分享
2013/07/23 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
PHP SPL使用方法和他的威力
2013/11/12 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
javascript静态的url如何传递
2007/05/03 Javascript
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
JavaScrpt判断一个数是否是质数的实例代码
2017/06/11 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
canvas轨迹回放功能实现
2017/12/20 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
Vue退出登录时清空缓存的实现
2019/11/12 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
python中logging模块的一些简单用法的使用
2019/02/22 Python
python itsdangerous模块的具体使用方法
2020/02/17 Python
python爬虫分布式获取数据的实例方法
2020/11/26 Python
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
为什么要有struct关键字
2012/05/08 面试题
行政主管岗位职责
2013/11/18 职场文书
体育教育专业自荐信范文
2013/12/20 职场文书
初中作文评语集锦
2014/12/25 职场文书
英文感谢信范文
2015/01/21 职场文书
皇城相府导游词
2015/02/06 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
2016年中学法制宣传日活动总结
2016/04/01 职场文书