欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue插件實(shí)現(xiàn)v-model功能

 更新時(shí)間:2018年09月10日 11:24:39   作者:鴻*雁  
最近在開(kāi)發(fā)自己的富文本編輯器插件,在開(kāi)發(fā)中遇到了很多問(wèn)題其中我覺(jué)得比較好的問(wèn)題就是在你定義的插件中實(shí)現(xiàn)雙向綁定。這篇文章主要介紹了vue插件實(shí)現(xiàn)v-model功能,需要的朋友可以參考下

最近在開(kāi)發(fā)自己的富文本編輯器插件,在開(kāi)發(fā)中遇到了很多問(wèn)題其中我覺(jué)得比較好的問(wèn)題就是在你定義的插件中實(shí)現(xiàn)雙向綁定。就好像input中v-model的功能類似。

v-model語(yǔ)法:

在vue中我們實(shí)現(xiàn)表單的雙向綁定時(shí)代碼一般時(shí)這樣寫的:

<input type="text" v-model="value" style="line-height: 30px;">
data () {
 return {
 value: '222'
 }
}

可以通過(guò)這樣的方式實(shí)現(xiàn)value的值和輸入框中的值雙向綁定了。

事實(shí)上v-model只是一個(gè)語(yǔ)法糖,他的真正實(shí)現(xiàn)是這樣的:

<input type="text" :value="value" @input="value=$event.target.value">

以上代碼分幾個(gè)步驟:

1.將輸入框的值綁定到變量上,這個(gè)是單向綁定,意味著改變變量的值可以改變輸入框的值,但是改變輸入框的值不能改變變量的值

2.監(jiān)聽(tīng)input事件(input輸入框都有該事件,當(dāng)輸入內(nèi)容時(shí)自動(dòng)觸發(fā)該事件),當(dāng)輸入框輸入內(nèi)容就單向改變變量的值了

自定義編輯器雙向綁定

這個(gè)是插件的寫法:content是雙向綁定的值 height是指編輯器的高度

<editor v-model="content" :height="editorHeight"></editor>

插件vue的寫法:

<div v-bind:style="{height: height}" class="editor-box" ref="editor" contenteditable v-html="contentHtml" @input="changeText"></div>

在div中設(shè)置contenteditable屬性時(shí)把div設(shè)置成可編輯的輸入框,v-html是給編輯器單向綁定變量contentHtml值,input方法獲取編輯器的內(nèi)容并且返回給父元素的input方法:

 changeText () {
  const htmlString = this.$refs.editor.innerHTML
  this.$emit('input', htmlString)
 },

其他問(wèn)題:

光是這樣是不能夠解決問(wèn)題的,編輯器你會(huì)出現(xiàn)每次輸入的時(shí)候都會(huì)跳到開(kāi)頭位置:怎么解決呢?不多說(shuō)上代碼:

props: {
 value: {
  type: String,
  default: ''
 },
 height: {
  type: String,
  default: 'auto'
 }
 },
data () {
 return {
  // 編輯器內(nèi)容
  contentHtml: this.value || this.value === 0 ? this.value : '<div><br></div>',
  // 是否在編譯
  isLocked: true,
  // 光標(biāo)位置
  lastEditRange: null
 }
 },
 watch: {
 value (val) {
  if (!this.isLocked) {
  this.contentHtml = this.value;
  }
 }
 }

寫到這里大家應(yīng)該一頭霧水這樣寫有什么用:因?yàn)檫€少了一些代碼:

 <div v-bind:style="{height: height}" class="editor-box" ref="editor" contenteditable v-html="contentHtml" @input="changeText" @focus="focusEditor" @blur="blurEditor"></div>
 // 編輯器失去焦點(diǎn)
 blurEditor (event) {
  this.isLocked = false
 },
 // 編輯器獲得焦點(diǎn)
 focusEditor (event) {
  this.isLocked = true
 },

需要給插件添加兩個(gè)方法判斷編輯器是否正在編輯內(nèi)容,如果正在編輯中父組件綁定的值不讓他重新渲染子組件,這樣編輯器中的內(nèi)容就不會(huì)重新賦值了,這樣光標(biāo)就不會(huì)每次都跑到前面去了。

小小的總結(jié)一下:

•v-bind只能實(shí)現(xiàn)單向綁定
•v-model(v-bind+觸發(fā)的input事件)實(shí)現(xiàn)雙向綁定

總結(jié)

以上所述是小編給大家介紹的vue插件實(shí)現(xiàn)v-model功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • vue使用?vue-socket.io三種方式及踩坑實(shí)例解析

    vue使用?vue-socket.io三種方式及踩坑實(shí)例解析

    這篇文章主要為大家介紹了vue使用?vue-socket.io三種方式及踩坑實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • vue-cli或vue項(xiàng)目利用HBuilder打包成移動(dòng)端app操作

    vue-cli或vue項(xiàng)目利用HBuilder打包成移動(dòng)端app操作

    這篇文章主要介紹了vue-cli或vue項(xiàng)目利用HBuilder打包成移動(dòng)端app操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • vuex新手進(jìn)階篇之改變state?mutations的使用

    vuex新手進(jìn)階篇之改變state?mutations的使用

    在vue的項(xiàng)目中不可避免的會(huì)使用到vuex用于數(shù)據(jù)的存儲(chǔ),下面這篇文章主要給大家介紹了關(guān)于vuex新手進(jìn)階篇之改變state?mutations的使用,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • vue中靜態(tài)文件引用的注意事項(xiàng)及說(shuō)明

    vue中靜態(tài)文件引用的注意事項(xiàng)及說(shuō)明

    這篇文章主要介紹了vue中靜態(tài)文件引用的注意事項(xiàng)及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • three.js實(shí)現(xiàn)vr全景圖功能實(shí)例(vue)

    three.js實(shí)現(xiàn)vr全景圖功能實(shí)例(vue)

    去年全景圖在微博上很是火爆了一陣,正好我也做過(guò)一點(diǎn)全景相關(guān)的項(xiàng)目,下面這篇文章主要給大家介紹了關(guān)于three.js實(shí)現(xiàn)vr全景圖功能的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • 一文帶你搞懂Vue3中的各種ref的使用

    一文帶你搞懂Vue3中的各種ref的使用

    在?Vue3?中,有許多與響應(yīng)式相關(guān)的函數(shù),例如?toRef、toRefs、isRef、unref?等等,本文將詳細(xì)介紹這些函數(shù)的用法,讓我們?cè)趯?shí)際開(kāi)發(fā)中知道應(yīng)該使用哪些?API?并能夠熟練地回答面試官的相關(guān)問(wèn)題
    2023-08-08
  • vue+elementUi 實(shí)現(xiàn)密碼顯示/隱藏+小圖標(biāo)變化功能

    vue+elementUi 實(shí)現(xiàn)密碼顯示/隱藏+小圖標(biāo)變化功能

    這篇文章主要介紹了vue+elementUi 實(shí)現(xiàn)密碼顯示/隱藏+小圖標(biāo)變化功能,需本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 關(guān)于Vue組件間的常用傳參方式

    關(guān)于Vue組件間的常用傳參方式

    這篇文章主要介紹了關(guān)于Vue組件間的常用傳參方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue實(shí)現(xiàn)自動(dòng)檢測(cè)以及版本的更新

    Vue實(shí)現(xiàn)自動(dòng)檢測(cè)以及版本的更新

    當(dāng)用戶在當(dāng)前站點(diǎn)停留時(shí)間比較長(zhǎng),中途站點(diǎn)進(jìn)行升級(jí)更新之后,用戶如果不刷新頁(yè)面就任然停留在舊的頁(yè)面里,如何讓用戶收到一個(gè)提示,引導(dǎo)用戶進(jìn)行更新操作呢?下面給大家介紹如何站點(diǎn)更新如何在生產(chǎn)環(huán)境提示用戶更新,進(jìn)行頁(yè)面刷新操作,核心原理其實(shí)很簡(jiǎn)單
    2023-03-03
  • 詳解如何在nuxt中添加proxyTable代理

    詳解如何在nuxt中添加proxyTable代理

    這篇文章主要介紹了詳解如何在nuxt中添加proxyTable代理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08

最新評(píng)論