亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Vue自定義toast組件的實例代碼

2019-11-19 13:14:59
字體:
來源:轉載
供稿:網友

寫了兩三天,終于把toast組件寫出來了。不敢說是最好的設計,希望有更好思路的朋友可以在評論區給我意見!_(:з」∠)_

第一步:寫toast.vue,將樣式之類的先定下來

<template> <div v-show="showToast" class="toast" :class="position"> <div class="toast_container" v-if="type=='success'">  <div><i class="iconfont icon-check icon"></i></div>  <div class="msg_container">{{message}}</div> </div> <div class="toast_container" v-else-if="type=='wrong'">  <div><i class="iconfont icon-warning-circle icon"></i></div>  <div class="msg_container">{{message}}</div> </div> <div class="toast_container" v-else-if="type=='loading'">  <div><loading10></loading10></div>  <div class="msg_container">{{message}}</div> </div></div></template><script>import loading10 from '../loading/spiner'export default{ props:{  message:String,  type:{   validator: function (value) {   // 值必須是這些字符串中的一個   return ['success', 'wrong', 'loading'].indexOf(value) !== -1  },   default:'success'  },  duration:{   type:Number,   default:3000  },   position:{   type:String,   default:'middle'  } }, components:{  loading10 }, data(){  return{   showToast:false  } }}</script><style scoped>.toast{ width:100%;}.toast_container{ background: rgba(0, 0, 0, 0.7); border-radius: 8px; color:#fff; margin-left:88px; margin-right:88px; text-align:center; padding-top:15px; padding-bottom: 15px; }.top{ position:absolute; top:10%;}.middle{ position:absolute; top:40%;}.bottom{ position:absolute; top:70%;}.msg_container{ margin-top:8px; margin-left:15px; margin-right:15px; line-height: 22px; font-size: 16px; word-wrap: break-word;}.icon{ font-size:30px;}</style>

一共三種樣式,成功(success),失?。╳rong),加載中(loading);

一共三種位置,上(top),中(middle),下(bottom);

所有涉及的圖案出自阿里的iconfont 手機淘寶圖標庫。

加載中動畫是自己寫的蹩腳的加載組件(emmm,就不放出來污染大家眼睛了,需要的可以評論區知會一聲_(:з」∠)_)

第二步:寫index.js ,完成toast組件的實例化

import Vue from 'vue'import Toast from './toast'let singleToast=true;let queue=[];function createInstance(){ // 返回一個擴展實例構造器 if(!queue.length||!singleToast){ const ToastConstructor = Vue.extend(Toast); // 構造一個實例 const toastDom = new ToastConstructor({ el: document.createElement('div'), }); // 把實例化的 toast.vue 添加到 body 里 document.body.appendChild(toastDom.$el); queue.push(toastDom); singleToast=true; return toastDom; }};// 注冊為全局組件的函數function toast(options= {}) { const toastDom = createInstance(); toastDom.message =typeof options === 'string' ? options : options.message; toastDom.type = options.type || 'success'; toastDom.duration = options.duration || 3000; toastDom.position = options.position || 'middle'; if(!toastDom.message){ toastDom.showToast =singleToast= false; }else{ toastDom.showToast=true; setTimeout(() => {toastDom.showToast =singleToast= false} ,toastDom.duration); }}// 將組件注冊到 vue 的 原型鏈里去,// 這樣就可以在所有 vue 的實例里面使用 this.$toast()// Vue.prototype.$toast = showToastVue.prototype.$toast = toast;export default toast

設置singleToast和queue的目的在于:確保同一時期界面上只有一個toast,不能同時出現多個toast。

由于toast會初始化,因此為了避免在任何操作之前界面上就出現一個toast,用if語句判斷:

如果沒有傳入的message,則不顯示toast(這樣可以使得初始化的toast不顯示)

否則顯示,并且過一定時間消失,只有singleToast為false,說明此刻界面上沒有toast,才能再新建一個toast實例(因為此時if判斷內queue.length 不為0【初始化的toast組件本身占了一個位置】,而singleToast為false,因此可以創建)

第三步:使用

在main.js 添加如下代碼:

import toast from './components/toast/index'Vue.use(toast)

創建需要調用的Vue文件:

<template> <div>  <input type="button" value="顯示彈窗" @click="showToast"> </div></template> <script> export default {  methods: {   showToast () {    this.$toast({message:'加載中',type:'loading',position:'bottom',     duration:'2000'});    // this.$toast('成功提示');   }  } } </script>

可以看到一共兩種方式,可以以對象方式傳入參數,也可以只傳入字符串,其他采用默認設置。

總結

以上所述是小編給大家介紹的SVue自定義toast組件的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品视频在线播放免| 亚洲爱爱爱爱爱| 91视频8mav| 色综合91久久精品中文字幕| 亚洲欧美制服综合另类| 成人免费网站在线观看| 精品国产依人香蕉在线精品| 欧美丰满片xxx777| 成人精品福利视频| 久久99热精品| 久久久久久av| 亚洲综合日韩在线| 中国人与牲禽动交精品| 午夜精品蜜臀一区二区三区免费| 国产suv精品一区二区三区88区| 国产剧情久久久久久| 亚洲第一精品久久忘忧草社区| 欧美精品免费在线| 国产欧美一区二区三区久久人妖| 欧美自拍大量在线观看| 亚洲人成免费电影| 国产精品电影在线观看| 综合网中文字幕| 亚洲欧美三级在线| 亚洲变态欧美另类捆绑| 国产精品美女免费看| 日韩有码在线电影| 日韩中文在线中文网三级| 久久久91精品国产一区不卡| 热99在线视频| 欧美国产日韩在线| 欧美午夜精品久久久久久久| 伊人亚洲福利一区二区三区| 中文字幕亚洲自拍| 国产精品香蕉在线观看| 成人网在线免费看| 日韩在线视频观看正片免费网站| 国产午夜精品视频免费不卡69堂| 欧美黑人性生活视频| 欧美在线视频导航| 欧美日韩国产在线看| 永久免费看mv网站入口亚洲| 亚洲精品国产综合区久久久久久久| 国产成人综合精品| 欧美色播在线播放| 亚洲欧美日韩一区二区三区在线| 日韩av在线一区二区| 亚洲人成五月天| 日韩av在线精品| 日韩乱码在线视频| 中文字幕亚洲欧美一区二区三区| 国产精品黄页免费高清在线观看| 亚洲精品自拍第一页| 国产精品久久久久久久久久久久| 欧美午夜xxx| 久久久久久国产| 国产成人一区二区| 欧美日韩国产激情| 高潮白浆女日韩av免费看| 亚洲精品欧美极品| 欧美性猛交xxx| 97久久精品人搡人人玩| 国产欧美日韩丝袜精品一区| 亚洲japanese制服美女| 亚洲精品电影网站| 久久久久免费精品国产| 国产九九精品视频| 亚洲欧美综合区自拍另类| 国内揄拍国内精品| 亚洲国产精品悠悠久久琪琪| 欧美激情中文字幕在线| 日韩av电影国产| 国产拍精品一二三| 国产精品直播网红| 亚洲码在线观看| 亚洲男女性事视频| 日韩精品高清在线观看| 成人黄色免费网站在线观看| 国产精品精品国产| 久久视频这里只有精品| 成人福利网站在线观看| 欧美激情亚洲另类| www.日韩视频| 欧美第一黄网免费网站| 欧美电影院免费观看| 亚洲国产私拍精品国模在线观看| 两个人的视频www国产精品| 91精品国产免费久久久久久| 91精品视频免费观看| 亚洲视频在线免费看| 97热精品视频官网| 亚洲一区二区三区成人在线视频精品| 欧美日韩午夜视频在线观看| 日韩欧美一区二区三区久久| 亚洲欧美日韩成人| 九九九久久久久久| 国产精品麻豆va在线播放| 91精品视频网站| 久久精品色欧美aⅴ一区二区| 久久久久久久久久av| 午夜精品蜜臀一区二区三区免费| 欧美性高跟鞋xxxxhd| 色诱女教师一区二区三区| 国产午夜精品全部视频播放| 91深夜福利视频| 欧美超级乱淫片喷水| 欧美另类暴力丝袜| 国产91在线视频| 亚洲高清色综合| 日韩a**站在线观看| 中文字幕在线国产精品| 欧美最顶级丰满的aⅴ艳星| 亚洲国产免费av| 亚洲精品视频二区| 亚洲高清色综合| 国内精品视频久久| 韩国精品美女www爽爽爽视频| 91精品久久久久久综合乱菊| 中文字幕精品在线| 一本一本久久a久久精品牛牛影视| 在线观看精品自拍私拍| 成人欧美一区二区三区在线湿哒哒| 国产成人精品久久亚洲高清不卡| www.日韩不卡电影av| 国产有码在线一区二区视频| 欧美片一区二区三区| 亚洲电影免费观看高清完整版在线观看| 亚洲女人天堂视频| 国产精品一区久久久| 久久精品视频一| 神马久久久久久| 亚洲成人1234| 一区二区三区视频在线| 亚洲丝袜在线视频| 亚洲一区二区三区成人在线视频精品| 国产一区二区三区欧美| 国产男女猛烈无遮挡91| 亚洲精品国产精品久久清纯直播| 欧美大片va欧美在线播放| 日韩影视在线观看| 国产精品视频xxxx| 一区二区中文字幕| 日韩精品日韩在线观看| 国产日韩欧美成人| 久久视频在线直播| 热久久免费国产视频| 欧美专区在线播放| 宅男66日本亚洲欧美视频| 日韩精品在线私人| 午夜精品一区二区三区视频免费看| 欧美影院在线播放| 奇门遁甲1982国语版免费观看高清| 中文字幕无线精品亚洲乱码一区| 国产成人综合av| 色婷婷久久av| 黑人巨大精品欧美一区免费视频| 亚州成人av在线| 国产视频综合在线| 欧美日韩国产一区中文午夜| 美女精品久久久| 久久久久这里只有精品| 日韩欧美国产中文字幕| 日韩欧美国产成人| 日韩av在线电影网|