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

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自定義組件中使用?v-model指令詳情

    在vue自定義組件中使用?v-model指令詳情

    這篇文章主要介紹了在vue自定義組件中使用?v-model指令詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • 解決vue中使用proxy配置不同端口和ip接口問題

    解決vue中使用proxy配置不同端口和ip接口問題

    這篇文章主要介紹了解決vue中使用proxy配置不同端口和ip接口問題 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Vue 項目安裝和配置@antfu/eslint-config 保姆級教程

    Vue 項目安裝和配置@antfu/eslint-config 保姆級教程

    本文指導(dǎo)如何在Vue項目中安裝配置@antfu/eslint-config,實現(xiàn)代碼規(guī)范與自動格式化,本文分步驟給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • Vue中在新窗口打開頁面及Vue-router的使用

    Vue中在新窗口打開頁面及Vue-router的使用

    這篇文章主要介紹了Vue中在新窗口打開頁面 及 Vue-router的使用,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • web前端vue之CSS過渡效果示例

    web前端vue之CSS過渡效果示例

    本篇文章主要介紹了web前端vue之CSS過渡效果示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • vue數(shù)據(jù)變化但頁面刷新問題

    vue數(shù)據(jù)變化但頁面刷新問題

    這篇文章主要介紹了vue數(shù)據(jù)變化但頁面刷新問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue中CSS?scoped的原理詳細(xì)講解

    Vue中CSS?scoped的原理詳細(xì)講解

    在組件中增加的css加了scoped屬性之后,就在會在當(dāng)前這個組件的節(jié)點上增加一個data-v-xxx屬性,下面這篇文章主要給大家介紹了關(guān)于Vue中CSS?scoped原理的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • vue使用jsMind思維導(dǎo)圖的實戰(zhàn)指南

    vue使用jsMind思維導(dǎo)圖的實戰(zhàn)指南

    jsMind是一個顯示/編輯思維導(dǎo)圖的純javascript類庫,其基于 html5的canvas進(jìn)行設(shè)計,這篇文章主要給大家介紹了關(guān)于vue使用jsMind思維導(dǎo)圖的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 在vue中使用cookie記住用戶上次選擇的實例(本次例子中為下拉框)

    在vue中使用cookie記住用戶上次選擇的實例(本次例子中為下拉框)

    這篇文章主要介紹了在vue中使用cookie記住用戶上次選擇的實例(本次例子中為下拉框),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Vue 設(shè)置axios請求格式為form-data的操作步驟

    Vue 設(shè)置axios請求格式為form-data的操作步驟

    今天小編就為大家分享一篇Vue 設(shè)置axios請求格式為form-data的操作步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10

最新評論

郑州市| 绥德县| 上高县| 蓬安县| 古浪县| 汪清县| 黔南| 布拖县| 富宁县| 邓州市| 博湖县| 巫山县| 海门市| 云南省| 大名县| 石嘴山市| 桦甸市| 交城县| 南城县| 满城县| 洛阳市| 涿州市| 东港市| 鄂州市| 南阳市| 边坝县| 朝阳县| 东源县| 鸡东县| 临湘市| 连山| 四川省| 锦屏县| 安宁市| 瓦房店市| 玉林市| 巴马| 慈利县| 商水县| 贵德县| 策勒县|