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

vue自定義實例化modal彈窗功能的實現(xiàn)

 更新時間:2022年09月27日 10:13:45   作者:37 degrees Celsius  
這篇文章主要介紹了vue自定義實例化modal彈窗,Vue.extend 屬于Vue的全局 api,在實際業(yè)務(wù)開發(fā)中我們很少使用,因為相比常用的 Vue.component寫法使用 extend 步驟要更加繁瑣一些,本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友參考下

需求背景

使用iview時發(fā)現(xiàn)其定義的this.$Modal.confirm()不能進行樣式修改,并且秉承著對新知識的追求,故此有了以下的開發(fā)

按照我的文檔習(xí)慣:優(yōu)先上代碼

//  components/confirmModal/index.vue
<template>
  <Modal v-model="modal" :title="title">
    <div>{{content}}</div>
    <div slot="footer">
      <Button class="btn-primary" @click="onSubmit" :loading="loading">sure</Button>
      <Button class="btn-cancel" @click="cancel">cancel</Button>
    </div>
  </Modal>
</template>

<script>
export default {
  name: 'confirm-modal',
  data() {
    return {
      modal: false,
      loading: false,
      title: '',
      content: '',
      subFunc: null,
      cancelFunc: null
    }
  },
  methods: {
    show(data) {
      const { title, content, subFunc, cancelFunc } = data
      this.modal = true
      this.title = title
      this.content = content
      this.subFunc = subFunc
      this.cancelFunc = cancelFunc
    },
    onSubmit() {
      this.subFunc.call()
    },
    cancel() {
      this.modal = false
    }
  }
}
</script>
// components/confirmModal/index.js

import Vue from 'vue'
import ConfirmModal from './index.vue'

const Modal = Vue.extend(ConfirmModal)

let instance1

let instance = new Modal()

instance.confirm = function (data) {
  instance1 = new Modal({
    data
  }).$mount()
  document.body.appendChild(instance1.$el)
  if (data) {
    instance1.show(data)
  }
  return instance1
}

instance.remove = function () {
  instance1.cancel()
}


export default {
  install: Vue => {
    Vue.prototype.$ConfirmModal = instance // 將ConfirmModal 組件暴露出去,并掛載在Vue的prototype上
  }
}
// main.js

import Vue from "vue";
import ConfirmModal from './components/shared/confirmModal/index.js'
Vue.use(ConfirmModal)

下面進行相關(guān)講解

1. 寫一個相關(guān)的vue組件:index.vue

這里vue組件根據(jù)自己所需進行書寫,我這里就不進行相關(guān)講解了;

2. 通過js文件將vue文件暴露出去

創(chuàng)建confirmModal實例,并掛載到一個dom實例上。

const Modal = Vue.extend(ConfirmModal)

Vue.extend 屬于Vue的全局 api,在實際業(yè)務(wù)開發(fā)中我們很少使用,因為相比常用的 Vue.component寫法使用 extend 步驟要更加繁瑣一些。但是在一些獨立組件開發(fā)場景中(例如:ElementUI庫),所以Vue.extend + $mount這對組合非常有必要需要我們了解下。

在這里插入圖片描述

在這里插入圖片描述

再new一個instance對象,其中包含多個你所需要調(diào)用的方法,我這里定義了兩個,分別是confirm remove且在最初時需要將你掛載的instance1存起來,避免在其他function中需要使用

最后export default instance即可

3. 需要在main.js中使用Vue.use(ConfirmModal)進行使用

import Vue from "vue";
import ConfirmModal from './components/shared/confirmModal/index.js'
Vue.use(ConfirmModal)

4. 用法

在任何vue中直接使用即可

this.$ConfirmModal.confirm({
  title: '123',
  content: '12111',
  subFunc: () => {
    console.log('1111')
    console.log(this.$ConfirmModal)
    this.$ConfirmModal.remove()
  }
})

到此這篇關(guān)于vue自定義實例化modal彈窗的文章就介紹到這了,更多相關(guān)vue自定義modal彈窗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue中動態(tài)修改img標簽中src的方法實踐

    vue中動態(tài)修改img標簽中src的方法實踐

    本文主要介紹了vue中動態(tài)修改img標簽中src的方法實踐,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • vue3實戰(zhàn)-axios請求封裝問題(get、post、put、delete)

    vue3實戰(zhàn)-axios請求封裝問題(get、post、put、delete)

    這篇文章主要介紹了vue3實戰(zhàn)-axios請求封裝問題(get、post、put、delete),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 如何修改Vue項目運行的IP和端口

    如何修改Vue項目運行的IP和端口

    這篇文章主要介紹了修改Vue項目運行的IP和端口的方法,本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • Element-UI結(jié)合遞歸組件實現(xiàn)后臺管理系統(tǒng)左側(cè)菜單

    Element-UI結(jié)合遞歸組件實現(xiàn)后臺管理系統(tǒng)左側(cè)菜單

    在Vue.js中使用遞歸組件可以方便地構(gòu)建多層級的菜單結(jié)構(gòu),遞歸組件適用于處理具有嵌套關(guān)系的數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-09-09
  • Vue3中創(chuàng)建異步組件的流程步驟

    Vue3中創(chuàng)建異步組件的流程步驟

    在現(xiàn)代前端開發(fā)中,組件的重用性和異步加載是提升用戶體驗和優(yōu)化性能的關(guān)鍵因素,在Vue 3中,創(chuàng)建異步組件變得更為便利,本文將探討如何在Vue 3中使用setup語法糖來創(chuàng)建異步組件,感興趣的小伙伴跟著小編一起來看看吧
    2024-09-09
  • 詳解VUE里子組件如何獲取父組件動態(tài)變化的值

    詳解VUE里子組件如何獲取父組件動態(tài)變化的值

    這篇文章主要介紹了詳解VUE里子組件如何獲取父組件動態(tài)變化的值,子組件通過props獲取父組件傳過來的數(shù)據(jù),子組件存在操作傳過來的數(shù)據(jù)并且傳遞給父組件,需要的朋友可以參考下
    2018-12-12
  • vue-video-player實現(xiàn)實時視頻播放方式(監(jiān)控設(shè)備-rtmp流)

    vue-video-player實現(xiàn)實時視頻播放方式(監(jiān)控設(shè)備-rtmp流)

    這篇文章主要介紹了vue-video-player實現(xiàn)實時視頻播放方式(監(jiān)控設(shè)備-rtmp流),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 基于iview-admin實現(xiàn)動態(tài)路由的示例代碼

    基于iview-admin實現(xiàn)動態(tài)路由的示例代碼

    這篇文章主要介紹了基于iview-admin實現(xiàn)動態(tài)路由的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Vue項目利用axios請求接口下載excel

    Vue項目利用axios請求接口下載excel

    這篇文章主要為大家詳細介紹了Vue項目利用axios請求接口下載excel,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • element-UI el-table修改input值視圖不更新問題

    element-UI el-table修改input值視圖不更新問題

    這篇文章主要介紹了element-UI el-table修改input值視圖不更新問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02

最新評論