91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue2.0利用 v-model如何實現組件props雙向綁定

發布時間:2021-05-21 14:23:30 來源:億速云 閱讀:762 作者:小新 欄目:web開發

這篇文章主要介紹了Vue2.0利用 v-model如何實現組件props雙向綁定,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

在項目中開始使用vue2來構建項目了,跟 vue1 很大的一處不同在于2 取消了props 的雙向綁定,改成只能從父級傳到子級的單向數據流,初衷當然是好的,為了避免雙向綁定在項目中容易造成的數據混亂。

解決方案一

然后開始參考網上和github上的方案等等,發現很多解決方案是這樣的

  1. 用data對象中創建一個props屬性的副本

  2. watch props屬性 賦予data副本 來同步組件外對props的修改

  3. watch data副本,emit一個函數 通知到組件外

這里以最常見的 modal為例子:modal挺合適雙向綁定的,外部可以控制組件的 顯示或者隱藏,組件內部的關閉可以控制 visible屬性隱藏,同時visible 屬性同步傳輸到外部

///modal.vue 組件
<template>
 <div class="modal" v-show="visible">
  <div class="close" @click="cancel">X</div>
 </div>
</template>

<script>
export default {
 name:'modal',
 props: {
  value: {
  type: Boolean,
  default:false
  }
 },

 data () {
 return {
  visible:false
 }
 },
 watch:{
  value(val) {
  console.log(val);
  this.visible = val;
  },
  visible(val) {
  this.$emit("visible-change",val);
  }
 },
 methods:{
 cancel(){
  this.visible = false;
 }
 },
 mounted() {
 if (this.value) {
  this.visible = true;
 }
 }
}
</script>


///調用modal組件
<modal :value="isShow" @visible-change="modalVisibleChange"></modal>

export default {
 name: 'app',
 data () {
 return {
  isShow:true,
 }
 },
 methods:{
  modalVisibleChange(val){
  this.isShow = val;
  }
 }
}

這樣就解決了 組件props 雙向綁定的問題。 但是這樣有一個不是太美觀的現象就是 在父級調用 modal組件的時候,還需要寫一個 modalVisibleChange 的methods. 總是顯得這部分代碼是多余的。 特別是寫一個讓別人用的公共組件,這樣調用太麻煩了。能不能不寫method來實現props的雙向綁定呢,答案是可以的。

優美解決方案

那就是利用 v-model, 在組件內部放置一個 隱藏的input 控件來保存v-model的值,進行雙向綁定

改成如下代碼:

<template>
 <div class="modal" v-show="visible">
  <div class="close" @click="cancel">X</div>
  <input type="text" :value="value" style='display:none;'>
 </div>
</template>

<script>
export default {
 props: {
  value: {
  type: Boolean,
  default:false
  }
 },

 data () {
 return {
  visible:false
 }
 },
 watch:{
  value(val) {
  console.log(val);
  this.visible = val;
  },
  visible(val) {
  this.$emit('input', val);
  }
 },
 methods:{
 cancel(){
  this.visible = false;
 }
 },
 mounted() {
 if (this.value) {
  this.visible = true;
 }
 }
}
</script>


///調用modal組件

 <modal v-model="isShow"></modal>

export default {
 name: 'app',
 data () {
 return {
  isShow:false
 }
 }
}
</script>

這樣調用組件的代碼是不是很簡潔,其他人員要調用的話,會很輕松,只要設置 isShow 就可以控制 modal 組件的顯示或者隱藏,同時 如果是modal 組件內部關閉按鈕關閉的,狀態也會傳到 isShow。

為什么要使用Vue

Vue是一款友好的、多用途且高性能的JavaScript框架,使用vue可以創建可維護性和可測試性更強的代碼庫,Vue允許可以將一個網頁分割成可復用的組件,每個組件都包含屬于自己的HTML、CSS、JavaScript,以用來渲染網頁中相應的地方,所以越來越多的前端開發者使用vue。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Vue2.0利用 v-model如何實現組件props雙向綁定”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安龙县| 沛县| 江源县| 合水县| 海原县| 台东市| 溧阳市| 且末县| 和平区| 莲花县| 玉龙| 始兴县| 山阴县| 芒康县| 望江县| 黎城县| 宝丰县| 长阳| 吴江市| 泰宁县| 安多县| 民丰县| 靖边县| 云阳县| 喀什市| 阿坝县| 晋宁县| 田阳县| 郁南县| 隆昌县| 泌阳县| 光泽县| 太仓市| 洮南市| 扬中市| 宝应县| 区。| 治县。| 洞头县| 贡觉县| 北宁市|