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

vue2 如何實現(xiàn)div contenteditable=“true”(類似于v-model)的效果

 更新時間:2017年02月08日 14:50:18   投稿:daisy  
這篇文章主要給大家介紹了利用vue2如何實現(xiàn)div contenteditable="true",就是類似于v-model的效果,文中給出了兩種解決的思路,對大家具有一定的參考價值,有需要的朋友們下面來一起看看吧。

發(fā)現(xiàn)問題

在 vue2 中對表單控件有著良好的雙向數(shù)據(jù)綁定機(jī)制,但是對于要特定實現(xiàn)某些功能的輸入時,我們就不得不使用到 contenteditable="true" 的 div ,而在這個 div 上是使用 v-model 是沒有效果的。那么問題就來了,輸入是非常需要雙向綁定的,這里的雙向數(shù)據(jù)綁定該如何實現(xiàn)?

解決思路一:自定義指令

當(dāng)然,說在這一段的前面,這種解決方式在 vue2 中是不行的,為什么這么說,因為現(xiàn)在去搜索這個問題絕大多數(shù)的搜索結(jié)果是這個,所以放在前面。

實現(xiàn)的原理以及為什么不能用了

原理:自定義一個雙向數(shù)據(jù)綁定的指令,代碼如下:

Vue.directive('demo', {
 twoWay: true,
 bind: function () {
 this.handler = function () {
  this.set(this.el.innerHTML)
 }.bind(this)
 this.el.addEventListener('input', this.handler)
 },
 update: function (newValue, oldValue) {
 this.el.innerHTML = newValue || ''
 },
 unbind: function () {
 this.el.removeEventListener('input', this.handler)
 }
})

至于 this 下的這些方法,在 vue 官網(wǎng)上可能不太容易找到,因為這些是 vue1 中的內(nèi)容,而在 vue2 中已經(jīng)被移除了。所以在 vue2 中我們是不能這么干的,當(dāng)然如果你使用的是 vue1 那么完全沒問題,直接拿去用即可。

解決思路二:使用組件

單獨聲明一個組件,在組件內(nèi)部處理數(shù)據(jù)(也就是innerHTML),并將數(shù)據(jù)返回給父組件。

代碼如下:

<template>
 <div contenteditable="true"
  v-html="innerText"
  @input="changeText"></div>
</template>
<script>
 export default {
 props: ['value'],
 data(){
  return {innerText:this.value}
 },
 methods:{
  changeText(){
  this.innerText = this.$el.innerHTML;
  this.$emit('input',this.innerText);
  }
 }
 }
</script>

然后在父組件中直接使用 v-model 就可以了(這里我把組件名稱定義成了 v-edit-div)。

<template>
 <div>
 <v-edit-div v-model='text'></v-edit-div>
 <span>{{text}}</span>
 </div>
</template>
<script>
 export default {
 data(){
  return {
  text:'改一下試一試',
  }
 }
 }
</script>

至于為什么可以直接用 v-model ,看官網(wǎng)的 API 吧。

v-model 傳送門

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • vue實現(xiàn)頂部導(dǎo)航欄以及跳轉(zhuǎn)

    vue實現(xiàn)頂部導(dǎo)航欄以及跳轉(zhuǎn)

    這篇文章主要介紹了vue實現(xiàn)頂部導(dǎo)航欄以及跳轉(zhuǎn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • vue+SpringBoot使用WebSocket方式

    vue+SpringBoot使用WebSocket方式

    WebSocket是一種全雙工通信協(xié)議,通過HTTP升級機(jī)制建立連接,支持實時雙向數(shù)據(jù)傳輸,示例代碼展示了如何在Java Spring Boot和Vue.js中實現(xiàn)WebSocket服務(wù)和客戶端
    2025-02-02
  • vue實現(xiàn)簡單的MVVM框架

    vue實現(xiàn)簡單的MVVM框架

    這篇文章給大家分享了基于vue實現(xiàn)一個簡單的MVVM框架的相關(guān)內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。
    2018-08-08
  • 淺析Vue3中的邏輯復(fù)用

    淺析Vue3中的邏輯復(fù)用

    這篇文章主要為大家詳細(xì)介紹了Vue3中邏輯復(fù)用的相關(guān)知識,文中的示例代碼簡潔易懂,對我們深入了解Vue3有一定的幫助,需要的小伙伴可以參考下
    2023-12-12
  • 詳解使用vue實現(xiàn)tab 切換操作

    詳解使用vue實現(xiàn)tab 切換操作

    這篇文章主要介紹了詳解使用vue實現(xiàn)tab操作,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 在IDEA中Debug調(diào)試VUE項目的詳細(xì)步驟

    在IDEA中Debug調(diào)試VUE項目的詳細(xì)步驟

    idea竟然有一個神功能很多朋友都不是特別清楚,下面小編給大家?guī)砹嗽贗DEA中Debug調(diào)試VUE項目的詳細(xì)步驟,感興趣的朋友一起看看吧
    2021-10-10
  • vue對插件(iview,elementui,treeselect)樣式的局部修改方式

    vue對插件(iview,elementui,treeselect)樣式的局部修改方式

    這篇文章主要介紹了vue對插件(iview,elementui,treeselect)樣式的局部修改方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue+webpack實現(xiàn)異步加載三種用法示例詳解

    vue+webpack實現(xiàn)異步加載三種用法示例詳解

    這篇文章主要介紹了vue+webpack實現(xiàn)異步加載的三種用法,文中給大家提到了vue+webpack實現(xiàn)異步組件加載的代碼,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2018-04-04
  • vue2實現(xiàn)簡易時鐘效果

    vue2實現(xiàn)簡易時鐘效果

    這篇文章主要為大家詳細(xì)介紹了vue2實現(xiàn)簡易時鐘效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • vue項目實現(xiàn)文件下載進(jìn)度條功能

    vue項目實現(xiàn)文件下載進(jìn)度條功能

    這篇文章主要介紹了vue項目實現(xiàn)文件下載進(jìn)度條功能,本文通過具體實現(xiàn)代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09

最新評論

乌什县| 喜德县| 盐边县| 璧山县| 五莲县| 德惠市| 武夷山市| 延边| 北票市| 涞水县| 合阳县| 剑河县| 佛学| 兴城市| 乌苏市| 荥经县| 新安县| 永安市| 台中市| 庆城县| 陵水| 阳原县| 邻水| 彭州市| 海门市| 台中市| 济南市| 页游| 教育| 沂水县| 安多县| 呈贡县| 抚顺市| 遂平县| 衢州市| 武隆县| 太谷县| 光山县| 朝阳市| 黄冈市| 绵竹市|