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

vue3+Element?Plus?v-model實現(xiàn)父子組件數(shù)據(jù)同步的案例代碼

 更新時間:2024年01月12日 15:42:00   作者:serena_ing  
這篇文章主要介紹了vue3+Element?Plus?v-model實現(xiàn)父子組件數(shù)據(jù)同步,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

展示效果

一、父組件代碼

<template>
  <div>
    <el-card class="father">
      <el-button type="primary" @click="clickHandler">查看</el-button>
      <el-dialog
        v-model="dialogVisible"
        title="修改數(shù)據(jù)"
        width="50%"
        align-center
        @close="cancel"
      >
        <Child v-model="data"></Child>
        <template #footer>
          <span class="dialog-footer">
            <el-button @click="dialogVisible = false">取消</el-button>
            <el-button type="primary" @click="save"> 確定 </el-button>
          </span>
        </template>
      </el-dialog>
    </el-card>
  </div>
</template>
<script setup lang="ts">
import { cloneDeep } from "lodash";
import { ref } from "vue";
import Child from "./components/Child";
import type { AnyObject } from "./data.ts";
const dialogVisible = ref(false);
const data = ref<AnyObject[]>([
  {
    id: "1001",
    role: "明蘭",
    video: "知否",
    score: 10,
  },
  {
    id: "1002",
    role: "薛杉杉",
    video: "杉杉來吃",
    score: 9,
  },
]);
const originData = ref<AnyObject[]>([]);
const clickHandler = () => {
  dialogVisible.value = true;
  originData.value = cloneDeep(data.value); // 需要深拷貝一份,確保數(shù)據(jù)獨立
};
const cancel = () => {
  dialogVisible.value = false;
  data.value = originData.value; // 點擊取消,使用原數(shù)據(jù)
};
const save = () => {
  dialogVisible.value = false;
  originData.value = data.value; // 點擊保存,將最新數(shù)據(jù)保存一份
};
</script>
<style scoped lang="scss">
.father {
  height: 90vh;
}
</style>

二、子組件

<template>
  <div class="son">
    <el-table :data="data" :style="{ width: '100%' }" border>
      <el-table-column prop="role" label="角色" />
      <el-table-column prop="video" label="劇名">
        <template #default="{ row }">
          <el-input v-model="row.video" placeholder="請輸入劇名" />
        </template>
      </el-table-column>
      <el-table-column prop="score" label="評分">
        <template #default="{ row }">
          <el-input v-model="row.score" placeholder="請輸入評分" />
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>
<script setup lang="ts">
import { computed } from "vue";
import type { AnyObject } from "../../data.ts";
const props = defineProps<{
  modelValue: AnyObject;
}>();
const emits = defineEmits<{
  (e: "update:modelValue", data: AnyObject): void;
}>();
// 用計算屬性的get和set接收,可以避免修改props引起的違反單向數(shù)據(jù)流警告
const data = computed({
  get() {
    return props.modelValue;
  },
  set(value) {
    emits("update:modelValue", value);
  },
});
</script>
<style scoped>
</style>

三、data.ts文件

export interface AnyObject {
  id: string;
  role: string;
  video: string;
  score: number;
}

總結(jié)

  • Element Plus dialog對話框中插入子組件,建議把底部按鈕寫在外面,點擊取消或者關(guān)閉dialog對話框可以統(tǒng)一用 el-dialog 的 close 事件;
  • v-model 可以實現(xiàn)父子組件的數(shù)據(jù)同步,在子組件修改數(shù)據(jù)會違反單項數(shù)據(jù)流,所以需要使用計算屬性的 get 和 set 接收一下,避免警告;
  • 點擊取消的時候需要將數(shù)據(jù)深拷貝一份,確保數(shù)據(jù)獨立。

到此這篇關(guān)于vue3+Element Plus v-model實現(xiàn)父子組件數(shù)據(jù)同步的文章就介紹到這了,更多相關(guān)vue3父子組件數(shù)據(jù)同步內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue+penlayers實現(xiàn)多邊形繪制及展示

    Vue+penlayers實現(xiàn)多邊形繪制及展示

    這篇文章主要為大家詳細(xì)介紹了Vue+penlayers實現(xiàn)多邊形繪制及展示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Vant Weapp組件踩坑:picker的初始賦值解決

    Vant Weapp組件踩坑:picker的初始賦值解決

    這篇文章主要介紹了Vant Weapp組件踩坑:picker的初始賦值解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue使用腳手架vue-cli創(chuàng)建并引入自定義組件

    vue使用腳手架vue-cli創(chuàng)建并引入自定義組件

    這篇文章介紹了vue使用腳手架vue-cli創(chuàng)建并引入自定義組件的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • element--Diaolog彈窗打開之后渲染組件方式

    element--Diaolog彈窗打開之后渲染組件方式

    這篇文章主要介紹了element--Diaolog彈窗打開之后渲染組件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue、uniapp實現(xiàn)組件動態(tài)切換效果

    vue、uniapp實現(xiàn)組件動態(tài)切換效果

    在Vue中,通過使用動態(tài)組件,我們可以實現(xiàn)組件的動態(tài)切換,從而達(dá)到頁面的動態(tài)展示效果,這篇文章主要介紹了vue、uniapp實現(xiàn)組件動態(tài)切換,需要的朋友可以參考下
    2023-10-10
  • 詳解如何創(chuàng)建并發(fā)布一個 vue 組件

    詳解如何創(chuàng)建并發(fā)布一個 vue 組件

    這篇文章主要介紹了詳解如何創(chuàng)建并發(fā)布一個vue組件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • vue通過vue-lazyload實現(xiàn)圖片懶加載的代碼詳解

    vue通過vue-lazyload實現(xiàn)圖片懶加載的代碼詳解

    這篇文章主要給大家介紹了vue通過vue-lazyload實現(xiàn)圖片懶加載,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Vue3中watch的用法與最佳實踐指南

    Vue3中watch的用法與最佳實踐指南

    這篇文章主要給大家介紹了關(guān)于Vue3中watch用法與最佳實踐的相關(guān)資料,watch的作用可以監(jiān)控一個值的變換,并調(diào)用因為變化需要執(zhí)行的方法,可以通過watch動態(tài)改變關(guān)聯(lián)的狀態(tài),需要的朋友可以參考下
    2021-07-07
  • Vue.js使用v-show和v-if的注意事項

    Vue.js使用v-show和v-if的注意事項

    這篇文章一開始先對Vue.js中v-show和v-if兩者的區(qū)別進(jìn)行了簡單的介紹,而后通過圖文詳細(xì)給大家介紹了Vue.js使用v-show和v-if注意的事項,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • 解決Element組件的坑:抽屜drawer和彈窗dialog

    解決Element組件的坑:抽屜drawer和彈窗dialog

    這篇文章主要介紹了解決Element組件的坑:抽屜drawer和彈窗dialog問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07

最新評論