亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

VUE 直接通過JS 修改html對象的值導(dǎo)致沒有更新到數(shù)據(jù)中解決方法分析

 更新時間:2019年12月02日 11:31:41   作者:自由港  
這篇文章主要介紹了VUE 直接通過JS 修改html對象的值導(dǎo)致沒有更新到數(shù)據(jù)中解決方法,結(jié)合實(shí)例形式詳細(xì)分析了VUE使用JS修改html對象的值導(dǎo)致沒有更新到數(shù)據(jù)的原因與解決方法,需要的朋友可以參考下

本文實(shí)例講述了VUE 直接通過JS 修改html對象的值導(dǎo)致沒有更新到數(shù)據(jù)中解決方法。分享給大家供大家參考,具體如下:

業(yè)務(wù)場景

我們在使用vue 編寫 代碼時,我們有一個 多行文本框控件,希望在頁面點(diǎn)擊一個按鈕 在 文本框焦點(diǎn)位置插入一個 {pk}的數(shù)據(jù)。

發(fā)現(xiàn)插入 這個數(shù)據(jù)后,這個數(shù)據(jù)并沒有同步到 數(shù)據(jù)中,但是直接通過鍵盤輸入,就可以改變數(shù)據(jù)。

原因分析

在通過 JS 修改控件的value 數(shù)據(jù)后,并沒有觸發(fā)到數(shù)據(jù)更新。

解決辦法

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;
   }
  }
 }
})

當(dāng)文本框獲取焦點(diǎn)時,我們發(fā)布一個 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}")
}

通過這個代碼我們往焦點(diǎn)處插入我們的代碼。

當(dāng)文本框失去焦點(diǎn)時,將當(dāng)前控件的值作為 input 事件進(jìn)行發(fā)布,從而實(shí)現(xiàn)了數(shù)據(jù)的同步。

希望本文所述對大家vue.js程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評論