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

Vue+Element實現(xiàn)封裝抽屜彈框

 更新時間:2023年06月12日 09:00:54   作者:山水有輕音  
這篇文章主要為大家詳細介紹了如何利用Vue和Element實現(xiàn)簡單的抽屜彈框效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

一進行showDrawer()封裝

新建dialog.js

// 彈框模板
import Vue from 'vue';
import { Drawer } from 'element-ui';
const modalTemplate = `
  <el-drawer :visible.sync="visible" :title="title" :size="size" :direction="direction">
    <component :is="component" v-bind="props" @ok="handleOk" @cancel="handleCancel"></component>
  </el-drawer>
`
// 彈框構(gòu)造函數(shù)
const ModalConstructor = Vue.extend({
  template: modalTemplate,
  data() {
    return {
      visible: false,
      title: '',
      size: '70%',
      direction: 'rtl',
      component: null,
      props: null,
      resolve: null,
      reject: null,
    }
  },
  methods: {
    show(component, props, options) {
      this.visible = true
      this.component = component
      this.props = props || {}
      this.title = options.title || '提示'
      this.size = options.width || '70%'
      this.direction = options.direction || 'rtl'
      return new Promise((resolve, reject) => {
        this.resolve = resolve
        this.reject = reject
      })
    },
    hide() {
      this.visible = false
    },
    handleOk(res) {
      this.resolve(res)
      this.hide()
    },
    handleCancel() {
      this.reject()
      this.hide()
    },
  },
})
// 創(chuàng)建組件實例并掛載到文檔中
const Modal = new ModalConstructor().$mount()
document.body.appendChild(Modal.$el)
// $showDrawer 方法
Vue.prototype.$showDrawer = function (component, props, options) {
  return Modal.show(component, props, options)
}
// $showDialog 方法
Vue.prototype.$showDialog = function (component, props, options) {
  return new Promise((resolve, reject) => {
    let MyDialogConstructor = Vue.extend({
      components: {
        'my-dialog': component
      },
      template: `<el-dialog :visible.sync="visible" :title="title" :width="width" :before-close="beforeClose">
                    <my-dialog :props="props" @ok="handleOk" @cancel="handleCancel"></my-dialog>
                  </el-dialog>`,
      data() {
        return {
          visible: true,
          title: options.title || '提示',
          width: options.width || '50%',
          props: props,
          resolve: resolve,
          reject: reject,
        }
      },
      methods: {
        hide() {
          this.visible = false
        },
        handleOk(res) {
          this.resolve(res)
          this.hide()
        },
        handleCancel() {
          this.reject()
          this.hide()
        },
        beforeClose(done) {
          ElementUI.MessageBox.confirm('確認關(guān)閉?').then(() => {
            done()
          }).catch(() => {})
        },
      },
    })
    let MyDialog = new MyDialogConstructor().$mount()
    document.body.appendChild(MyDialog.$el)
  })
}

在上面的代碼中,我們首先定義了一個 modalTemplate 模板,使用 Element UI 的 Drawer 和組件插槽來實現(xiàn)彈框內(nèi)容的展示,并添加了一些我們需要的屬性和方法。 然后定義了一個 ModalConstructor 構(gòu)造函數(shù),通過 show 方法來打開彈框,并返回 Promise 來等待用戶的操作,最后返回用戶的操作結(jié)果。

在 show 方法中,我們通過傳入組件和 props 的方式來動態(tài)渲染組件,并設置其他選項,如彈框的標題、大小、方向等。

## 2在main.js里引入dialog.js
```js
import '@util/dialog'

如何使用

// 調(diào)用 $showDrawer 方法
this.$showDrawer(ExamDetail, {
  examId: rowId
}, {
  title: '考試詳情',
  width: '1200px',
}).then(() => {
  this.searchForm()
})
// 調(diào)用 $showDialog 方法
this.$showDialog(ExamDetail, {
  examId: rowId
}, {
  title: '考試詳情',
  width: '1200px',
}).then(() => {
  this.searchForm()
})

到此這篇關(guān)于Vue+Element實現(xiàn)封裝抽屜彈框的文章就介紹到這了,更多相關(guān)Vue Element抽屜彈框內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue時間軸 vue-light-timeline的用法說明

    Vue時間軸 vue-light-timeline的用法說明

    這篇文章主要介紹了Vue時間軸 vue-light-timeline的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Vue3使用MD5加密實戰(zhàn)案例(清晰明了)

    Vue3使用MD5加密實戰(zhàn)案例(清晰明了)

    MD5是一種信息摘要算法(對稱加密),一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個128位(16字節(jié))的散列值,用來確保信息傳輸完整一致性,這篇文章主要給大家介紹了關(guān)于Vue3使用MD5加密的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • vue如何調(diào)用攝像頭實現(xiàn)拍照上傳圖片、本地上傳圖片

    vue如何調(diào)用攝像頭實現(xiàn)拍照上傳圖片、本地上傳圖片

    這篇文章主要給大家介紹了關(guān)于vue如何調(diào)用攝像頭實現(xiàn)拍照上傳圖片、本地上傳圖片的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2023-07-07
  • vue實現(xiàn)輸入框自動跳轉(zhuǎn)功能

    vue實現(xiàn)輸入框自動跳轉(zhuǎn)功能

    這篇文章主要為大家詳細介紹了vue實現(xiàn)輸入框自動跳轉(zhuǎn)功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Vue3.2?setup語法糖及Hook函數(shù)基本使用

    Vue3.2?setup語法糖及Hook函數(shù)基本使用

    這篇文章主要為大家介紹了Vue3.2?setup語法糖及Hook函數(shù)基本使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • element Dropdown組件意想不到的坑

    element Dropdown組件意想不到的坑

    本文主要介紹了element Dropdown組件意想不到的坑,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 詳解vue axios用post提交的數(shù)據(jù)格式

    詳解vue axios用post提交的數(shù)據(jù)格式

    這篇文章主要介紹了詳解vue axios用post提交的數(shù)據(jù)格式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • vue form表單使用resetFields函數(shù)出現(xiàn)的問題

    vue form表單使用resetFields函數(shù)出現(xiàn)的問題

    這篇文章主要介紹了vue form表單使用resetFields函數(shù)出現(xiàn)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue構(gòu)建單頁面應用實戰(zhàn)

    vue構(gòu)建單頁面應用實戰(zhàn)

    本篇文章主要介紹了vue構(gòu)建單頁面應用實戰(zhàn),使用 SPA,沒有頁面切換,就沒有白屏阻塞,可以大大提高 H5 的性能,達到接近原生的流暢體驗。
    2017-04-04
  • Vue中自定義標簽及其使用方式

    Vue中自定義標簽及其使用方式

    這篇文章主要介紹了Vue中自定義標簽及其使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論