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动态插入技术
Nov 12 Javascript
jQuery简单实现提交数据出现loading进度条的方法
Mar 29 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
Apr 29 Javascript
js实现文字跑马灯效果
Feb 23 Javascript
JavaScript实现打印星型金字塔功能实例分析
Sep 27 Javascript
angularjs手动识别字符串中的换行符方法
Oct 02 Javascript
微信小程序返回上一页传参并刷新过程解析
Dec 13 Javascript
JS document文档的简单操作完整示例
Jan 13 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
Mar 09 Javascript
angular组件间传值测试的方法详解
May 07 Javascript
JavaScript实现点击切换功能
Jan 27 Javascript
小程序实现侧滑删除功能
Jun 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
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
修复ie8&amp;chrome下window的resize事件多次执行
2011/10/20 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
JS实现的另类手风琴效果网页内容切换代码
2015/09/08 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
Python实现EM算法实例代码
2020/10/04 Python
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
校园自助餐厅的创业计划书
2013/12/26 职场文书
2014年开学第一课活动方案
2014/03/06 职场文书
校园联欢晚会主持词
2014/03/17 职场文书
促销活动总结怎么写
2014/06/25 职场文书
2014年采购员工作总结
2014/11/18 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
英文辞职信范文
2015/05/13 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript