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

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

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

需求背景

使用iview時(shí)發(fā)現(xiàn)其定義的this.$Modal.confirm()不能進(jìn)行樣式修改,并且秉承著對(duì)新知識(shí)的追求,故此有了以下的開發(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)

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

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

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

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

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

const Modal = Vue.extend(ConfirmModal)

Vue.extend 屬于Vue的全局 api,在實(shí)際業(yè)務(wù)開發(fā)中我們很少使用,因?yàn)橄啾瘸S玫?Vue.component寫法使用 extend 步驟要更加繁瑣一些。但是在一些獨(dú)立組件開發(fā)場(chǎng)景中(例如:ElementUI庫),所以Vue.extend + $mount這對(duì)組合非常有必要需要我們了解下。

在這里插入圖片描述

在這里插入圖片描述

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

最后export default instance即可

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

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自定義實(shí)例化modal彈窗的文章就介紹到這了,更多相關(guān)vue自定義modal彈窗內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 封裝一個(gè)更易用的Dialog組件過程詳解

    封裝一個(gè)更易用的Dialog組件過程詳解

    這篇文章主要為大家介紹了封裝一個(gè)更易用的Dialog組件過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 詳解element上傳組件before-remove鉤子問題解決

    詳解element上傳組件before-remove鉤子問題解決

    這篇文章主要介紹了詳解element上傳組件before-remove鉤子問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Vue項(xiàng)目中使用自定義字體樣式方式

    Vue項(xiàng)目中使用自定義字體樣式方式

    這篇文章主要介紹了Vue項(xiàng)目中使用自定義字體樣式方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue-router 中router-view不能渲染的解決方法

    vue-router 中router-view不能渲染的解決方法

    本篇文章主要結(jié)合了vue-router 中router-view不能渲染的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • vue+vuecli+webpack中使用mockjs模擬后端數(shù)據(jù)的示例

    vue+vuecli+webpack中使用mockjs模擬后端數(shù)據(jù)的示例

    本篇文章主要介紹了vue+vuecli+webpack中使用mockjs模擬后端數(shù)據(jù)的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-10-10
  • vue頁面監(jiān)聽是否置為后臺(tái)或可見狀態(tài)問題

    vue頁面監(jiān)聽是否置為后臺(tái)或可見狀態(tài)問題

    這篇文章主要介紹了vue頁面監(jiān)聽是否置為后臺(tái)或可見狀態(tài)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue跳轉(zhuǎn)到詳情頁的兩種實(shí)現(xiàn)方法

    vue跳轉(zhuǎn)到詳情頁的兩種實(shí)現(xiàn)方法

    最近接觸了vue項(xiàng)目,下面這篇文章主要給大家介紹了關(guān)于vue跳轉(zhuǎn)到詳情頁的兩種實(shí)現(xiàn)方法,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-06-06
  • 基于vue的下拉刷新指令和滾動(dòng)刷新指令

    基于vue的下拉刷新指令和滾動(dòng)刷新指令

    這篇文章主要介紹了基于vue的下拉刷新指令和滾動(dòng)刷新指令的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Vue3獲取DOM節(jié)點(diǎn)的3種方式實(shí)例

    Vue3獲取DOM節(jié)點(diǎn)的3種方式實(shí)例

    Vue本來無需操作DOM來更新界面,而且Vue也不推薦我們直接操作DOM,但是我們非要拿到DOM操作DOM怎么辦,下面這篇文章主要給大家介紹了關(guān)于Vue3獲取DOM節(jié)點(diǎn)的3種方式,需要的朋友可以參考下
    2023-02-02
  • vue編譯打包本地查看index文件的方法

    vue編譯打包本地查看index文件的方法

    下面小編就為大家分享一篇vue編譯打包本地查看index文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02

最新評(píng)論

鄂州市| 保亭| 镇巴县| 溧阳市| 滕州市| 淮北市| 密云县| 吉隆县| 灌云县| 陇西县| 盐池县| 哈尔滨市| 崇礼县| 云南省| 仙桃市| 剑川县| 齐河县| 四川省| 玛沁县| 大名县| 卓资县| 兴业县| 惠州市| 达孜县| 嵩明县| 大竹县| 曲松县| 银川市| 丰镇市| 兖州市| 沾益县| 苗栗县| 奉贤区| 绩溪县| 湖口县| 全州县| 商丘市| 许昌市| 龙井市| 静安区| 台东县|