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

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>

當(dāng)子組件需要更新 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

當(dāng)使用在一個組件上時,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)單個 輸入框綁定

總結(jié)

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

相關(guān)文章

  • vue實現(xiàn)微信分享鏈接添加動態(tài)參數(shù)的方法

    vue實現(xiàn)微信分享鏈接添加動態(tài)參數(shù)的方法

    這篇文章主要介紹了vue微信分享鏈接添加動態(tài)參數(shù)的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-04-04
  • 在vue+element-plus中無法同時使用v-for和v-if的問題及解決方法

    在vue+element-plus中無法同時使用v-for和v-if的問題及解決方法

    由于路由中存在不需要遍歷的數(shù)據(jù)所以像用v-if來過濾,但是報錯,百度說vue不能同時使用v-if和v-for,今天小編給大家分享解決方式,感興趣的朋友跟隨小編一起看看吧
    2023-07-07
  • 解決vue 綁定對象內(nèi)點擊事件失效問題

    解決vue 綁定對象內(nèi)點擊事件失效問題

    今天小編就為大家分享一篇解決vue 綁定對象內(nèi)點擊事件失效問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue全局組件和局部組件的寫法介紹

    vue全局組件和局部組件的寫法介紹

    這篇文章主要介紹了vue全局組件和局部組件的寫法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Vue中安裝element-ui失敗問題原因及解決

    Vue中安裝element-ui失敗問題原因及解決

    Vue中安裝element-ui失敗問題原因及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 淺談vue后臺管理系統(tǒng)權(quán)限控制思考與實踐

    淺談vue后臺管理系統(tǒng)權(quán)限控制思考與實踐

    這篇文章主要介紹了淺談vue后臺管理系統(tǒng)權(quán)限控制思考與實踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • vue如何實現(xiàn)動態(tài)的選中狀態(tài)切換效果

    vue如何實現(xiàn)動態(tài)的選中狀態(tài)切換效果

    這篇文章主要介紹了vue如何實現(xiàn)動態(tài)的選中狀態(tài)切換效果,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue 使用post/get 下載導(dǎo)出文件操作

    vue 使用post/get 下載導(dǎo)出文件操作

    這篇文章主要介紹了vue 使用post/get 下載導(dǎo)出文件操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Vite的常見配置選項詳細說明

    Vite的常見配置選項詳細說明

    相信大部分兄弟都體驗過Vite了,都知道它很快,在學(xué)習(xí)的時候,官網(wǎng)上的各種配置也是看的眼花繚亂,不知道哪些是必要掌握的,下面這篇文章主要給大家介紹了關(guān)于Vite常見配置選項的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • Vue自定義組件中v-model的使用方法示例

    Vue自定義組件中v-model的使用方法示例

    日常開發(fā)中除了直接在input標簽上使用v-model指令外,封裝的組件也需要v-model,下面這篇文章主要給大家介紹了關(guān)于Vue自定義組件中v-model使用的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05

最新評論

将乐县| 阜阳市| 宁晋县| 察哈| 楚雄市| 东明县| 安岳县| 自治县| 桐乡市| 静安区| 凌海市| 丹阳市| 远安县| 海门市| 璧山县| 扎囊县| 大冶市| 黑龙江省| 常宁市| 阿尔山市| 泰和县| 阿鲁科尔沁旗| 绍兴县| 涞源县| 江川县| 剑川县| 沅陵县| 浏阳市| 治县。| 基隆市| 太保市| 镇巴县| 吉林省| 独山县| 新兴县| 九江县| 崇礼县| 神农架林区| 武宣县| 建湖县| 德令哈市|