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 相关文章推荐
33个优秀的 jQuery 图片展示插件分享
Mar 14 Javascript
jquery中通过父级查找进行定位示例
Jun 28 Javascript
javascript 获取函数形参个数
Jul 31 Javascript
jQuery插件实现控制网页元素动态居中显示
Mar 24 Javascript
理解javascript中的MVC模式
Jan 28 Javascript
微信小程序 数据绑定详解及实例
Oct 25 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
Oct 27 Javascript
JavaScript 动态三角函数实例详解
Jan 08 Javascript
通过命令行创建vue项目的方法
Jul 20 Javascript
jQuery Collapse1.1.0折叠插件简单使用
Aug 28 jQuery
15 分钟掌握vue-next响应式原理
Oct 13 Javascript
JS实现拖动模糊框特效
Aug 25 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
自制汽车收音机天线:收听广播的技巧和方法
2021/03/02 无线电
php操作SVN版本服务器类代码
2011/11/27 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
php文件上传 你真的掌握了吗
2016/11/28 PHP
JS 实现可停顿的垂直滚动实例代码
2016/11/23 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
微信小程序 搜索框组件代码实例
2019/09/06 Javascript
electron-vue开发环境内存泄漏问题汇总
2019/10/10 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
vue 导航守卫和axios拦截器有哪些区别
2020/12/19 Vue.js
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
Python中的引用知识点总结
2019/05/20 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
如何使用Python脚本实现文件拷贝
2019/11/20 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
基于python实现检索标记敏感词并输出
2020/05/07 Python
详细分析Python垃圾回收机制
2020/07/01 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
世界上最大的在线旅行社新加坡网站:Expedia新加坡
2016/08/25 全球购物
德国原装品牌香水、化妆品和手表网站:BRASTY.DE
2016/10/16 全球购物
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
Linux的主要特性
2016/09/03 面试题
销售自荐信
2013/10/22 职场文书
舞蹈毕业生的自我评价
2014/03/05 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
环保证明
2015/06/23 职场文书
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers