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学习5 jQuery事件模型
Feb 07 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
May 22 Javascript
jQuery基本过滤选择器使用介绍
Apr 18 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
Nov 21 Javascript
点击标签切换和自动切换DIV选项卡
Aug 10 Javascript
JavaScript使用cookie记录临时访客信息的方法
Apr 07 Javascript
jQuery.trim() 函数及trim()用法详解
Oct 26 Javascript
JQuery实现简单的服务器轮询效果实例
Mar 31 Javascript
Bootstrap开关(switch)控件学习笔记分享
May 30 Javascript
详解Angular结合zTree异步加载节点数据
Jan 20 Javascript
ES6中new Function()语法及应用实例分析
Feb 19 Javascript
vue使用echarts画组织结构图
Feb 06 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版(3)
2006/10/09 PHP
PHP 面向对象实现代码
2009/11/11 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
PHP反射基础知识回顾
2020/09/10 PHP
简明json介绍
2008/09/28 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
基于OL2实现百度地图ABCD marker的效果
2015/10/01 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
javascript中的作用域和闭包详解
2016/01/13 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
2019/01/19 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
python模块之StringIO使用示例
2015/04/08 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
2020/06/04 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
物业经理自我鉴定
2014/03/03 职场文书
大学生找工作求职信
2014/07/09 职场文书
廉政承诺书范文
2015/04/28 职场文书
微观世界观后感
2015/06/10 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
MySQL 数据丢失排查案例
2021/05/08 MySQL
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers