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

vue教程之toast彈框全局調(diào)用示例詳解

 更新時(shí)間:2020年08月24日 09:29:12   作者:汪培  
這篇文章主要為大家詳細(xì)介紹了vue教程之toast彈框全局調(diào)用示例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了vue toast彈框全局調(diào)用示例,供大家參考,具體內(nèi)容如下

1.首選新建一個(gè)toast.vue模板文件:

 <template>
 <transition :name="fadeIn">
 <div class="alertBox" v-show="show">
  <div class="alert-mask" v-show="isShowMask"></div>
  <transition :name="translate">
  <div class="box" :class="position" v-show="show">
   {{text}}
  </div>
  </transition>
 </div>
 </transition>
</template>

<script>
export default {
 data() {
 return {
 }
 },
 props: {
 show: { // 是否顯示此toast
  default: false
 },
 text: { // 提醒文字
  default: 'loading'
 },
 position: { // 提醒容器位置
  default: 'center'
 },
 isShowMask: { // 是否顯示遮罩層
  default: false
 },
 time: { // 顯示時(shí)間
  default: 1500
 },
 transition: { // 是否開(kāi)啟動(dòng)畫
  default: true
 }
 },
 mounted() { // 時(shí)間控制
 setTimeout(() => {
  this.show = false
 }, this.time)
 },
 computed: {
 translate() { // 根據(jù)props,生成相對(duì)應(yīng)的動(dòng)畫
  if (!this.transition) {
  return ''
  } else {
  if (this.position === 'top') {
   return 'translate-top'
  } else if (this.position === 'middle') {
   return 'translate-middle'
  } else if (this.position === 'bottom') {
   return 'translate-bottom'
  }
  }
 },
 fadeIn() { // 同上
  if (!this.transition) {
  return ''
  } else {
  return 'fadeIn'
  }
 }
 }
}
</script>

<style>
 .box{
 position: fixed;
 top: 50%;
 left: 50%;
 width: 100px;
 height: 100px;
 margin-left: -50px;
 margin-top: -50px;
 background: rgba(0,0,0,.5);
 text-align: center;
 line-height: 100px;
 color: #fff;
 font-size: 16px;
 z-index: 5000;
 color: #fff;
 }
 .box.top{
 top: 50px;
 margin-top: 0;
 }
 .box.center{
 top: 50%;
 margin-top: -100px;
 }
 .box.bottom{
 top: auto;
 bottom: 50px;
 margin-top: 0;
 }
 .alert-mask{
 position: fixed;
 left: 0;
 top: 0;
 bottom: 0;
 right: 0;
 background: rgba(0,0,0,.5);
 z-index: 4999;
 }
 .fadeIn-enter-active, .fadeIn-leave-active{
 transition: opacity .3s;
 }
 .fadeIn-enter, .fadeIn-leave-active{
 opacity: 0;
 }
 .translate-top-enter-active, .translate-top-leave-active{
 transition: all 0.3s cubic-bezier(.36,.66,.04,1);
 }
 .translate-top-enter, .translate-top-leave-active{
 transform: translateY(-50%);
 opacity: 0;
 }
 .translate-middle-enter-active, .translate-middle-leave-active{
 transition: all 0.3s cubic-bezier(.36,.66,.04,1);
 }
 .translate-middle-enter, .translate-middle-leave-active{
 transform: translateY(80%);
 opacity: 0;
 }
 .translate-bottom-enter-active, .translate-bottom-leave-active{
 transition: all 0.3s cubic-bezier(.36,.66,.04,1);
 }
 .translate-bottom-enter, .translate-bottom-leave-active{
 transform: translateY(100%);
 opacity: 0;
 }
</style>

2.主邏輯在toast.js里完成:

var Alert = require('./index.vue') // 引入vue模板
var Toast = {} // 定義插件對(duì)象
Toast.install = function (Vue, options) { // vue的install方法,用于定義vue插件
 // 如果toast還在,則不再執(zhí)行
 if(document.getElementsByClassName('alertBox').length){ 
  return
 }
 let toastTpl = Vue.extend(Alert) // 創(chuàng)建vue構(gòu)造器
 // el:提供一個(gè)在頁(yè)面上已存在的DOM元素作為Vue實(shí)例的掛載目標(biāo)??梢允莄ss選擇器,也可以是HTMLElement實(shí)例。
 // 在實(shí)例掛載之后,可以通過(guò)$vm.$el訪問(wèn)。
 // 如果這個(gè)選項(xiàng)在實(shí)例化時(shí)有用到,實(shí)例將立即進(jìn)入編譯過(guò)程。否則,需要顯示調(diào)用vm.$mount()手動(dòng)開(kāi)啟編譯(如下)
 // 提供的元素只能作為掛載點(diǎn)。所有的掛載元素會(huì)被vue生成的dom替換。因此不能掛載在頂級(jí)元素(html, body)上
 // let $vm = new toastTpl({
 // el: document.createElement('div')
 // })
 let $vm = new toastTpl() // 實(shí)例化vue實(shí)例
 // 此處使用$mount來(lái)手動(dòng)開(kāi)啟編譯。用$el來(lái)訪問(wèn)元素,并插入到body中
 let tpl = $vm.$mount().$el
 document.body.appendChild(tpl)

 Vue.prototype.$toast = { // 在Vue的原型上添加實(shí)例方法,以全局調(diào)用
 show(options) { // 控制toast顯示的方法
  if (typeof options === 'string') { // 對(duì)參數(shù)進(jìn)行判斷
  $vm.text = options // 傳入props
  }
  else if (typeof options === 'object') {
  Object.assign($vm, options) // 合并參數(shù)與實(shí)例
  }
  $vm.show = true // 顯示toast
 },
 hide() { // 控制toast隱藏的方法
  $vm.show = false
 }
 }
}
export default Toast; // 導(dǎo)出Toast(注意:此處不能用module exports導(dǎo)出,在一個(gè)文件中,不能同時(shí)使用require方式引入,而用module exports導(dǎo)出,兩種方式不能混用)

使用:

在vue項(xiàng)目的主文件中,引入插件,并進(jìn)行安裝:

這樣在項(xiàng)目的任何組件里,都可以使用這個(gè)toast的彈窗插件了:

想要更高級(jí)的插件學(xué)習(xí)源碼,請(qǐng)移步vux進(jìn)行源碼學(xué)習(xí)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解vue-cli 接口代理配置

    詳解vue-cli 接口代理配置

    本篇主要介紹了vue-cli 接口代理配置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • vue項(xiàng)目fetch本地PAG格式文件404 NotFound的解決

    vue項(xiàng)目fetch本地PAG格式文件404 NotFound的解決

    這篇文章主要介紹了vue項(xiàng)目fetch本地PAG格式文件404 NotFound的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue中的計(jì)算屬性和偵聽(tīng)屬性

    vue中的計(jì)算屬性和偵聽(tīng)屬性

    這篇文章主要介紹了vue中的計(jì)算屬性和偵聽(tīng)屬性,幫助大家更好的理解和學(xué)習(xí)vue框架的使用,感興趣的朋友可以了解下
    2020-11-11
  • Vue開(kāi)發(fā)常用方法詳解

    Vue開(kāi)發(fā)常用方法詳解

    這篇文章主要為大家介紹了Vue開(kāi)發(fā)常用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • vue3中安裝使用vue-i18n實(shí)時(shí)切換語(yǔ)言且不用刷新

    vue3中安裝使用vue-i18n實(shí)時(shí)切換語(yǔ)言且不用刷新

    這篇文章主要介紹了vue3中安裝使用vue-i18n實(shí)時(shí)切換語(yǔ)言不用刷新問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vuex state及mapState的基礎(chǔ)用法詳解

    vuex state及mapState的基礎(chǔ)用法詳解

    這篇文章主要介紹了vuex state及mapState的基礎(chǔ)用法詳解,本文通過(guò)實(shí)例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),需要的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-04-04
  • Vue使用axios添加請(qǐng)求頭方式

    Vue使用axios添加請(qǐng)求頭方式

    這篇文章主要介紹了Vue使用axios添加請(qǐng)求頭方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue axios調(diào)用接口方法報(bào)錯(cuò)500 internal server error的兩種解決方法

    vue axios調(diào)用接口方法報(bào)錯(cuò)500 internal server err

    前端使用axios 訪問(wèn)后端接口時(shí)報(bào)錯(cuò),在瀏覽器中點(diǎn)擊紅色的報(bào)錯(cuò)數(shù)據(jù),本文給大家分享vue axios調(diào)用接口方法報(bào)錯(cuò)500 internal server error的兩種解決方法,感興趣的朋友一起看看吧
    2023-10-10
  • vue如何通過(guò)插槽組件之間數(shù)據(jù)傳遞

    vue如何通過(guò)插槽組件之間數(shù)據(jù)傳遞

    這篇文章主要介紹了vue如何通過(guò)插槽組件之間數(shù)據(jù)傳遞問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • vue-electron使用serialport時(shí)問(wèn)題解決方案

    vue-electron使用serialport時(shí)問(wèn)題解決方案

    這篇文章主要介紹了vue-electron使用serialport時(shí)問(wèn)題解決方案,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09

最新評(píng)論

太谷县| 崇礼县| 论坛| 荥经县| 万荣县| 丹巴县| 吉木乃县| 万荣县| 兴文县| 靖安县| 会理县| 华安县| 奇台县| 磐安县| 六盘水市| 水富县| 玛纳斯县| 泸定县| 营口市| 沐川县| 称多县| 临猗县| 宁蒗| 阳泉市| 偏关县| 鄂伦春自治旗| 万宁市| 田阳县| 怀集县| 平江县| 南汇区| 时尚| 游戏| 右玉县| 惠来县| 大安市| 陵川县| 商水县| 松桃| 鹤山市| 罗城|