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 修改html对象的值导致没有更新到数据中去的更多相关文章
- 关于Javascript中通过实例对象修改原型对象属性值的问题
Javascript中的数据值有两大类:基本类型的数据值和引用类型的数据值. 基本类型的数据值有5种:null.undefined.number.boolean和string. 引用类型的数据值往大的 ...
- 生成二维码 加密解密类 TABLE转换成实体、TABLE转换成实体集合(可转换成对象和值类型) COOKIE帮助类 数据类型转换 截取字符串 根据IP获取地点 生成随机字符 UNIX时间转换为DATETIME\DATETIME转换为UNIXTIME 是否包含中文 生成秘钥方式之一 计算某一年 某一周 的起始时间和结束时间
生成二维码 /// <summary>/// 生成二维码/// </summary>public static class QRcodeUtils{private static ...
- js修改window对象中的url历史记录
//页面地址:http://localhost/11/account.html//访问页面后,地址变为:http://localhost/11/account.html?type=banana con ...
- js修改伪类的值
css文件 p.change:after { content: attr(data-content); } js文件 $(this).addClass('change').attr('data-con ...
- Js 之获取对象key值
var date = Object.keys(data); Object.keys( ) 会返回一个数组,数组中是这个对象的key值列表 所以只要Object.keys(a)[0], 就可以得只包含一 ...
- jquery 给input text元素赋值,js修改表单的值
简单粗暴: (第一种) $('#checkUserName').attr("value",sessionUser.name); (第二种) $("#checkUserNa ...
- js动态更改对象属性值的方法
下面代码,替换属性名称包含date的属性中的T为空格. for (var o in data) { //console.info(eval("d ...
- js如何将一个json数组对应放置到另一数组中去
需要将上面这个数组的每一个元素对应添加至下面的数组中 最后合成为这样的数组: 使用for循环,将第一个数组中的元素循环到第二个数组中
- 【转】javascript中值传递,地址传递,引用传递的问题(使用js创建list对象时会用到)
function initEditModal_SI(node) { if (node.siArray == undefined) { node.siArray = new Object(); } va ...
随机推荐
- CodeForces - 1260C(贪心+思维)
题意 https://vjudge.net/problem/CodeForces-1260C 有一串砖,凡是r的倍数而不是b的倍数必须涂红,凡是b的倍数而不是r的倍数必须涂蓝,是公倍数则选一个涂.把涂 ...
- hibernate之主键生成策略
1. hibernate的主键生成器: generator元素:表示了一个主键生成器,它用来为持久化类实例生成唯一的标识 . 连接数据库的xml hibernate.cfg.xml <?xml ...
- OpenTelemetry项目中的Observability
最近,在实操zipkin,jaeger,opencensus,opentracing,opentelemetry等. opentelemetry将Observability提到了重要页面, 并进行了讲 ...
- RabbitMQ学习笔记(一、消息中间件基础)
目录: 什么是消息中间件 消息中间件的作用 JMS规范 AMQP协议 RabbitMQ简介 Hello World 什么是消息中间件: 消息中间件(Message Queue Middleware,简 ...
- python线程类的start()和run()
start()方法: 开始线程活动. 对每一个线程对象来说它只能被调用一次,它安排对象在一个另外的单独线程中调用run()方法,而非当前所处的线程,当该方法在同一个线程对象中被调用超过一次时,会引入R ...
- 期望DP的一般思路
期望DP的一般思路 转载自_new2zy_ 期望\(dp\),也加概率\(dp\) 一般来说,期望\(dp\)找到正确的状态后,转移是比较容易想到的. 但一般情况下,状态一定是"可数&quo ...
- Codeforces Round #573 (Div. 2) Tokitsukaze and Mahjong 水题
B. Tokitsukaze and Mahjong time limit per test1 second memory limit per test256 megabytes Tokitsukaz ...
- R语言两自定义矩阵的基本运算-实例
#sink("matrix_history.txt") cat("请输入矩阵的行和列数,“,”号隔开,建议行 等于列 数:") number<-scan( ...
- Unreal Engine 4 系列教程 Part 8:粒子系统教程
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...
- 移动端js触摸touch详解(附带案例源码)
移动端触摸滑动原理详解案例,实现过程通过添加DOM标签的触摸事件监听,并计算触摸距离,通过距离坐标计算触摸角度,最后通过触摸角度去判断往哪个方向触摸的. 触摸的事件列表 触摸的4个事件: touchs ...