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

vue+elementui通用彈窗的實現(xiàn)(新增+編輯)

 更新時間:2021年01月07日 09:31:46   作者:yingmhd  
這篇文章主要介紹了vue+elementui通用彈窗的實現(xiàn)(新增+編輯),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

本文主要介紹了vue+elementui通用彈窗的實現(xiàn)(新增+編輯),分享給大家,具體如下:


組件模板

<el-dialog :title="title" :visible.sync="dialogShow" :close-on-click-modal="false">
  <div class="ym-common-dialog" :class="customClass">
    <div v-for="(col,index) in cols">
      <span><em v-if="!!col.isRequire">*</em>{{col.name}}</span>
      <template v-if="col.type === 'text'">
        <div>{{submitData[col.key]}}</div>
      </template>
      <template v-if="col.type === 'input'">
        <input type="text" v-model="submitData[col.key]" :placeholder="'請輸入' + col.name">
      </template>
      <template v-if="col.type === 'radio'">
        <div class="flexX">
        <el-radio v-for="radio in col.data" v-model="submitData[col.key]" :label="radio.label">{{radio.name}}</el-radio>
        </div>
      </template>
      <template v-if="col.type === 'select'">
        <el-select v-model="submitData[col.key]" placeholder="請選擇">
          <el-option
          v-for="option in col.data"
          :key="option.value"
          :label="option.label"
          :value="option.value">
          </el-option>
        </el-select>
      </template>
    </div>
  </div>
  <span slot="footer" class="dialog-footer">
    <el-button @click="dialogShow = false">取 消</el-button>
    <el-button type="primary" @click="confirm">確 定</el-button>
  </span>
</el-dialog>

彈窗的內(nèi)容根據(jù)傳入的數(shù)據(jù)去渲染,數(shù)據(jù)格式如下

cols: [{
  name: '輸入框',
  key: 'ccc', // 提交時對應(yīng)的字段
  type: 'input', // 類型 
  isRequire: true // 是否必填
}, {
  name: '單選框',
  key: 'aaa',
  type: 'radio',
  data: [{
    label: '1',
    name: '長城'
  }, {
    label: '2',
    name: '長安'
  }],
  isRequire: true
}, {
  name: '下拉框',
  key: 'bbb',
  type: 'select',
  data: [{
    value: '選項1',
    label: '黃金糕'
  }, {
    value: '選項2',
    label: '雙皮奶'
  }],
  isRequire: true
}],

組件data和props

data() {
  return {
    submitData: {}, // 提交數(shù)據(jù)集合
    dialogShow: false
  }
},
props: {
  // 彈窗顯示/隱藏
  dialogVisible: {
    type: Number,
    default: 0
  },
  // 彈窗Title
  title: String,
  // 自定義樣式
  customClass: String,
  // 數(shù)據(jù)列
  cols: {
    type: Array,
    default: () => []
  },
  // 編輯時傳入初始值
  data: {
    type: Object,
    default: () => {}
  }
},

組件數(shù)據(jù)的監(jiān)聽

watch: {
  dialogVisible(val) {
    if (val > 0) {
      this.dialogShow = true
    }
  },
  data: {
    handler(val) {
      this.submitData = val
    },
    immediate: true
  },
  submitData: {
    // 應(yīng)對 切換單選框隱藏其他元素的問題
    // 父組件監(jiān)聽到單選框的值變化時,修改cols的值,即可實現(xiàn)元素的隱藏與顯示
    handler() {
      this.$emit('change', this.submitData)
    },
    deep: true
  }
}

數(shù)據(jù)提交以及驗證

confirm() {
  // 驗證必填項
  let isMust = this.cols.filter(item => item.isRequire).map(item => item.key)
  Object.keys(this.submitData).forEach(key => {
    let index = isMust.indexOf(key)
    if ((index > -1) && this.submitData[key] !== '' && !!this.submitData[key]) {
      isMust.splice(index, 1)
    }
  })
  if (isMust.length > 0) {
    showDefaultTips('請注意必填項!', '', 3)
    return
  }
  this.$emit('complete', this.submitData)
  this.dialogShow = false
}

代碼在此

到此這篇關(guān)于vue+elementui通用彈窗的實現(xiàn)(新增+編輯)的文章就介紹到這了,更多相關(guān)vue elementui 彈窗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue在外部方法給下拉框賦值后不顯示label的解決

    vue在外部方法給下拉框賦值后不顯示label的解決

    這篇文章主要介紹了vue在外部方法給下拉框賦值后不顯示label的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue中如何合并el-table第一列相同數(shù)據(jù)

    Vue中如何合并el-table第一列相同數(shù)據(jù)

    這篇文章主要介紹了Vue中如何合并el-table第一列相同數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Vue3實現(xiàn)高階組件HOC的示例詳解

    Vue3實現(xiàn)高階組件HOC的示例詳解

    高階組件HOC在React社區(qū)是非常常見的概念,但是在Vue社區(qū)中卻是很少人使用,但其實在一些特殊的場景使用他就可以很優(yōu)雅的解決一些問題,下面就跟隨小編一起來了解下吧
    2025-01-01
  • vue.js中ref和$refs的使用及示例講解

    vue.js中ref和$refs的使用及示例講解

    這篇文章主要給大家介紹了關(guān)于vue.js中ref和$refs使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用vue.js具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 基于Vue+ECharts實現(xiàn)地圖展示與交互

    基于Vue+ECharts實現(xiàn)地圖展示與交互

    這篇文章中,我將逐步介紹如何使用 Vue 和 ECharts 實現(xiàn)一個互動式的地圖展示組件,其中支持返回上一層地圖、點擊查看不同城市的詳細信息,以及根據(jù)數(shù)據(jù)動態(tài)展示不同的統(tǒng)計信息,感興趣的小伙伴跟著小編一起來看看吧
    2025-02-02
  • vue通過過濾器實現(xiàn)數(shù)據(jù)格式化

    vue通過過濾器實現(xiàn)數(shù)據(jù)格式化

    這篇文章主要介紹了vue通過過濾器實現(xiàn)數(shù)據(jù)格式化的方法,文中講解非常細致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • nuxt.js框架使用小結(jié)

    nuxt.js框架使用小結(jié)

    本文主要介紹了nuxt.js框架使用小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • vue2與vue3下如何訪問使用public下的文件

    vue2與vue3下如何訪問使用public下的文件

    這篇文章主要介紹了vue2與vue3下如何訪問使用public下的文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Vue實現(xiàn)兄弟組件間的聯(lián)動效果

    Vue實現(xiàn)兄弟組件間的聯(lián)動效果

    這篇文章主要介紹了Vue實現(xiàn)兄弟組件間的聯(lián)動效果,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • vue中的render函數(shù)、h()函數(shù)、函數(shù)式組件詳解

    vue中的render函數(shù)、h()函數(shù)、函數(shù)式組件詳解

    在vue中我們使用模板HTML語法來組建頁面的,使用render函數(shù)我們可以用js語言來構(gòu)建DOM,這篇文章主要介紹了vue中的render函數(shù)、h()函數(shù)、函數(shù)式組件,需要的朋友可以參考下
    2023-02-02

最新評論

邵武市| 襄城县| 隆子县| 河东区| 蒙城县| 丰都县| 茂名市| 龙游县| 禄劝| 曲水县| 茌平县| 朝阳区| 龙胜| 边坝县| 南康市| 当阳市| 崇明县| 长岛县| 方山县| 五台县| 达日县| 张家港市| 友谊县| 贵定县| 枞阳县| 巧家县| 铁力市| 荔浦县| 高邑县| 昭苏县| 鸡西市| 桂阳县| 山丹县| 宁城县| 鄂托克旗| 阿拉善右旗| 永顺县| 嘉黎县| 余干县| 尚志市| 南城县|