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

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

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

一進(jì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)建組件實(shí)例并掛載到文檔中
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('確認(rèn)關(guān)閉?').then(() => {
            done()
          }).catch(() => {})
        },
      },
    })
    let MyDialog = new MyDialogConstructor().$mount()
    document.body.appendChild(MyDialog.$el)
  })
}

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

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

## 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實(shí)現(xiàn)封裝抽屜彈框的文章就介紹到這了,更多相關(guān)Vue Element抽屜彈框內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決Vue.js由于延時(shí)顯示了{(lán){message}}引用界面的問題

    解決Vue.js由于延時(shí)顯示了{(lán){message}}引用界面的問題

    今天小編就為大家分享一篇解決Vue.js由于延時(shí)顯示了{(lán){message}}引用界面的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 如何在Vue3和Vite項(xiàng)目中用SQLite數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲(chǔ)

    如何在Vue3和Vite項(xiàng)目中用SQLite數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲(chǔ)

    SQLite是一種嵌入式關(guān)系型數(shù)據(jù)庫管理系統(tǒng),是一個(gè)零配置、無服務(wù)器的、自給自足的、事務(wù)性的SQL數(shù)據(jù)庫引擎,這篇文章主要給大家介紹了關(guān)于如何在Vue3和Vite項(xiàng)目中用SQLite數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲(chǔ)的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • vue.js 實(shí)現(xiàn)a標(biāo)簽href里添加參數(shù)

    vue.js 實(shí)現(xiàn)a標(biāo)簽href里添加參數(shù)

    今天小編就為大家分享一篇vue.js 實(shí)現(xiàn)a標(biāo)簽href里添加參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Vue下載不同文件的幾種方式總結(jié)

    Vue下載不同文件的幾種方式總結(jié)

    在Vue項(xiàng)目中實(shí)現(xiàn)文件下載有多種方式,包括使用window.open、<a>標(biāo)簽、axios、FetchAPI、自定義$download方法以及創(chuàng)建a標(biāo)簽等,每種方法都有其適用場(chǎng)景,開發(fā)者可以根據(jù)項(xiàng)目需求選擇最合適的方式
    2025-01-01
  • vue中使用console.log打印的實(shí)現(xiàn)

    vue中使用console.log打印的實(shí)現(xiàn)

    這篇文章主要介紹了vue中使用console.log打印的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue項(xiàng)目啟動(dòng)時(shí)的端口占用問題分析與解決方案

    Vue項(xiàng)目啟動(dòng)時(shí)的端口占用問題分析與解決方案

    你有沒有遇到過這種情況:當(dāng)你滿懷期待地輸入 npm run serve,準(zhǔn)備啟動(dòng) Vue 項(xiàng)目時(shí),突然蹦出一堆紅色錯(cuò)誤信息,其中最顯眼的就是 EADDRINUSE?本文我們就來深入分析這個(gè)問題,并手把手教你如何解決它,需要的朋友可以參考下
    2025-09-09
  • Vue組件的渲染流程詳細(xì)講解

    Vue組件的渲染流程詳細(xì)講解

    在Vue核心中除了響應(yīng)式原理外,視圖渲染也是重中之重,下面這篇文章主要給大家介紹了關(guān)于Vue組件的渲染流程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Vue 打包后相對(duì)路徑的引用問題

    Vue 打包后相對(duì)路徑的引用問題

    這篇文章主要介紹了VUE 打包后相對(duì)路徑的引用問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • sockjs-node/info跨域請(qǐng)求問題及解決過程

    sockjs-node/info跨域請(qǐng)求問題及解決過程

    這篇文章主要介紹了sockjs-node/info跨域請(qǐng)求問題及解決過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2026-03-03
  • Vue的Scroll滾動(dòng)事件觸發(fā)方式

    Vue的Scroll滾動(dòng)事件觸發(fā)方式

    這篇文章主要介紹了Vue的Scroll滾動(dòng)事件觸發(fā)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04

最新評(píng)論

龙南县| 信丰县| 清苑县| 甘德县| 昌黎县| 城市| 乡宁县| 建昌县| 西丰县| 灵寿县| 榆社县| 凯里市| 彰化县| 大英县| 合肥市| 石台县| 佳木斯市| 沁阳市| 白城市| 龙里县| 富顺县| 安溪县| 武乡县| 剑阁县| 土默特左旗| 太仆寺旗| 兴隆县| 庆云县| 灵台县| 长沙市| 革吉县| 通化县| 微山县| 桂阳县| 榆林市| 白山市| 界首市| 元阳县| 娱乐| 霞浦县| 潜山县|