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

Vue2子組件綁定 v-model,實現(xiàn)父子組件通信方式

 更新時間:2023年04月20日 10:10:25   作者:潮汐未見潮落  
這篇文章主要介紹了Vue2子組件綁定 v-model,實現(xiàn)父子組件通信方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

前言

v-model 可以在組件上使用以實現(xiàn)雙向綁定。

首先讓我們回憶一下 v-model 在原生元素上的用法:

<input v-model="firstName" />

在代碼背后,模板編譯器會對 v-model 進行更冗長的等價展開。因此上面的代碼其實等價于下面這段:

<input
  :value="firstName"
  @input="firstName = $event.target.value"
/>

默認用法

父組件

<template>
  <div>
    <h1>{{ first }}-{{ last }}</h1>
    <UserName
      :firstName="first"
      :lastName="last"
      @update:firstName="func1"
      @update:lastName="func2"
    />
  </div>
</template>
 
<script>
import UserName from "./UserName.vue";
export default {
  name: "V-Model",
  components: {
    UserName,
  },
  data() {
    return {
      first: "000",
      last: "123",
    };
  },
  methods: {
    // 默認用法
    func1(val) {
      this.first = val;
    },
    func2(val) {
      this.last = val;
    },
  },
};
</script>

子組件

<template>
  <div>
    <input v-model="first" type="text" @input="input1" />
    <input v-model="last" type="text" @input="input2" />
  </div>
</template>
 
<script>
export default {
  name: "UserName",
  props: ["firstName", "lastName"],
 
  data() {
    return {
      first: this.firstName,
      last: this.lastName,
    };
  },
  methods: {
    input1() {
      this.$emit("update:firstName", this.first);
    },
    input2() {
      this.$emit("update:lastName", this.last);
    },
  },
};
</script>

以上就可以實現(xiàn) 父子組件的雙向綁定

.sync寫法

傳參的時候加上 .sync 會簡化上面的寫法,父組件不需要定義更新觸發(fā)函數(shù)(update)

 <UserName :firstName.sync="first" />

會被擴展為:

<UserName :firstName="first" @update:firstName="val => first = val"></UserName>

當子組件需要更新 firstName 的值時,它需要顯式地觸發(fā)一個更新事件:

this.$emit('update:firstName', newValue)

父組件

<template>
  <div>
    <h1>{{ first }}-{{ last }}</h1>
    <UserName :firstName.sync="first" :lastName.sync="last" />
  </div>
</template>
 
<script>
import UserName from "./UserName.vue";
export default {
  name: "V-Model",
  components: {
    UserName,
  },
 
  data() {
    return {
      first: "000",
      last: "123",
    };
  },
  methods: {
   
  },
};
</script>

子組件

<template>
  <div>
    <input type="text" :value="firstName" @input="$emit('update:firstName', $event.target.value)" />
    <input type="text" :value="lastName" @input="$emit('update:lastName', $event.target.value)" />
  </div>
</template>
 
<script>
export default {
  name: "UserName",
  components: {},
  props: ["firstName", "lastName"],
  data() {
    return {};
  },
  methods: {},
};
</script>

以上也可以實現(xiàn) 父子組件的雙向綁定

綁定單個 v-model

當使用在一個組件上時,v-model 會被展開為如下的形式:

 <UserName v-model="first"  />
 <!-- 上面等同于下面的寫法 -->
<UserName
  :modelValue="first"
  @input="first= $event.target.value"
/>

父組件

<template>
  <div>
    <h1>{{ first }}-{{ last }}</h1>
    <UserName v-model="first"  />
  </div>
</template>
 
<script>
import UserName from "./UserName.vue";
export default {
  name: "V-Model",
  components: {
    UserName,
  },
 
  data() {
    return {
      first: "000",
      last: "123",
    };
  },
  methods: {
    
  },
};
</script>

子組件

<template>
  <div>
    <input
      type="text"
      :value="firstName"
      @input="$emit('update', $event.target.value)"
    />
  </div>
</template>
 
<script>
export default {
  name: "UserName",
  components: {},
  props: ["firstName"],
  model: {
    prop: "firstName",
    event: "update",
  },
 
  data() {
    return {};
  },
};
</script>

現(xiàn)在可以實現(xiàn)單個 輸入框綁定

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 基于Vue3實現(xiàn)一個簡單的方位動畫

    基于Vue3實現(xiàn)一個簡單的方位動畫

    這篇文章主要為大家詳細介紹了如何基于Vue3實現(xiàn)一個簡單的方位動畫,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-02-02
  • vue?事件獲取當前組件的屬性方式

    vue?事件獲取當前組件的屬性方式

    這篇文章主要介紹了vue?事件獲取當前組件的屬性方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Vue3.0插件執(zhí)行原理與實戰(zhàn)

    Vue3.0插件執(zhí)行原理與實戰(zhàn)

    這篇文章主要介紹了Vue3.0插件執(zhí)行原理與實戰(zhàn),Vue項目能夠使用很多插件來豐富自己的功能Vue-Router、Vuex等,節(jié)省了我們大量的人力和物力,下面我們就一起來了解Vue3.0插件的原理吧,需要的小伙伴可以參考一下
    2022-02-02
  • 100行代碼理解和分析vue2.0響應式架構

    100行代碼理解和分析vue2.0響應式架構

    通過100行代碼幫助大家理解和分析vue2.0響應式架構的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 讓Vue也可以使用Redux的方法

    讓Vue也可以使用Redux的方法

    這篇文章主要介紹了讓Vue也可以使用Redux的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • vue項目優(yōu)雅實現(xiàn)自動引入組件的方法詳解

    vue項目優(yōu)雅實現(xiàn)自動引入組件的方法詳解

    在我們寫vue項目的時候,都會引入一些組件庫,有時候有可能還不止一個組件庫,那么如何優(yōu)雅的實現(xiàn)自動引入組件呢,下面小編就來和大家詳細講講吧
    2023-09-09
  • vue自定義鍵盤信息、監(jiān)聽數(shù)據(jù)變化的方法示例【基于vm.$watch】

    vue自定義鍵盤信息、監(jiān)聽數(shù)據(jù)變化的方法示例【基于vm.$watch】

    這篇文章主要介紹了vue自定義鍵盤信息、監(jiān)聽數(shù)據(jù)變化的方法,結合實例形式分析了vue.js基于vm.$watch進行事件監(jiān)聽相關操作技巧,需要的朋友可以參考下
    2019-03-03
  • Vue.js在使用中的一些注意知識點

    Vue.js在使用中的一些注意知識點

    這篇文章主要給大家介紹了Vue.js在使用中的一些注意知識點,文中介紹的非常詳細,對大家學習或者使用Vue.js具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-04-04
  • vue3使用Electron打包成exe的方法與打包報錯解決

    vue3使用Electron打包成exe的方法與打包報錯解決

    在前端開發(fā)中,Electron是一種常用的工具,它允許開發(fā)者使用Web技術構建桌面應用程序,本文主要介紹了vue3使用Electron打包成exe的方法與打包報錯解決,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • Vue中計算屬性computed的示例解讀

    Vue中計算屬性computed的示例解讀

    計算屬性和普通屬性一樣是在模板中綁定計算屬性的,當data中對應數(shù)據(jù)發(fā)生改變時,計算屬性的值也會發(fā)生改變。下面這篇文章主要給大家介紹了關于Vue中計算屬性computed的相關資料,需要的朋友可以參考下。
    2017-07-07

最新評論