最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

v-model語法:

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

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

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

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

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

以上代碼分幾個步驟:

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

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

自定義編輯器雙向綁定

這個是插件的寫法: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屬性時把div設(shè)置成可編輯的輸入框,v-html是給編輯器單向綁定變量contentHtml值,input方法獲取編輯器的內(nèi)容并且返回給父元素的input方法:

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

其他問題:

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

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,
  // 光標位置
  lastEditRange: null
 }
 },
 watch: {
 value (val) {
  if (!this.isLocked) {
  this.contentHtml = this.value;
  }
 }
 }

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

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

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

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

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

總結(jié)

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

相關(guān)文章

  • Nuxt.js實戰(zhàn)詳解

    Nuxt.js實戰(zhàn)詳解

    這篇文章主要介紹了Nuxt.js實戰(zhàn)詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • vue中刷新子組件重新加載子組件三種方法

    vue中刷新子組件重新加載子組件三種方法

    組件是Vue.js最強大的功能之一,組件可以擴展HTML元素,封裝可重用的代碼,這篇文章主要給大家介紹了關(guān)于vue中刷新子組件重新加載子組件三種方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • van-dialog彈窗異步關(guān)閉功能-校驗表單實現(xiàn)

    van-dialog彈窗異步關(guān)閉功能-校驗表單實現(xiàn)

    有時候我們需要通過彈窗去處理表單數(shù)據(jù),在原生微信小程序配合vant組件中有多種方式實現(xiàn),其中UI美觀度最高的就是通過van-dialog嵌套表單實現(xiàn),這篇文章主要介紹了van-dialog彈窗異步關(guān)閉-校驗表單,需要的朋友可以參考下
    2023-11-11
  • Vue前端實現(xiàn)截圖功能的簡單步驟

    Vue前端實現(xiàn)截圖功能的簡單步驟

    本文介紹了如何使用html2canvas庫來實現(xiàn)HTML頁面或某個元素的截圖功能,文中通過代碼介紹的非常詳細,需要注意的是此方法只能在瀏覽器環(huán)境中使用,需要的朋友可以參考下
    2024-10-10
  • Vue3+TypeScript實現(xiàn)遞歸菜單組件的完整實例

    Vue3+TypeScript實現(xiàn)遞歸菜單組件的完整實例

    Vue.js中的遞歸組件是一個可以調(diào)用自己的組件,遞歸組件一般用于博客上顯示評論,形菜單或者嵌套菜單,文章主要給大家介紹了關(guān)于Vue3+TypeScript實現(xiàn)遞歸菜單組件的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • vue嵌入第三方頁面幾種常見方法

    vue嵌入第三方頁面幾種常見方法

    在Vue中嵌入第三方頁面可以采用多種方法,例如使用<iframe>、Vue插件、動態(tài)加載第三方腳本或WebComponents,不同方法適用于不同類型的內(nèi)容和項目需求,如<iframe>適用于整個網(wǎng)頁,而動態(tài)腳本和WebComponents適合特定功能,選擇合適的方法可以有效整合外部資源
    2024-09-09
  • 如何讓別人訪問本地運行的vue項目

    如何讓別人訪問本地運行的vue項目

    這篇文章主要介紹了如何讓別人訪問本地運行的vue項目,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue-cli2,vue-cli3,vite?生產(chǎn)環(huán)境去掉console.log

    vue-cli2,vue-cli3,vite?生產(chǎn)環(huán)境去掉console.log

    console.log一般都是在開發(fā)環(huán)境下使用的,在生產(chǎn)環(huán)境下需要去除?,本文主要介紹了vue-cli2,vue-cli3,vite?生產(chǎn)環(huán)境去掉console.log,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • vue實現(xiàn)超過兩行顯示展開收起的代碼

    vue實現(xiàn)超過兩行顯示展開收起的代碼

    這篇文章主要介紹了vue實現(xiàn)超過兩行顯示展開收起的代碼,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 淺談Vue使用Elementui修改默認的最快方法

    淺談Vue使用Elementui修改默認的最快方法

    這篇文章主要介紹了淺談Vue使用Elementui修改默認的最快方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評論

平和县| 宣威市| 霍邱县| 济宁市| 西乡县| 潼南县| 恩平市| 固镇县| 全南县| 承德市| 昭通市| 广宁县| 饶河县| 高雄市| 盐津县| 余姚市| 寿阳县| 正宁县| 建始县| 阜城县| 儋州市| 河北区| 郴州市| 甘孜| 肥城市| 东丽区| 石狮市| 麻栗坡县| 南江县| 西平县| 明星| 肥城市| 新营市| 三明市| 佛坪县| 枣强县| 云龙县| 吉水县| 来宾市| 辽阳市| 南安市|