做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

vue彈窗插件實戰代碼

來源:懂視網 責編:小采 時間:2020-11-27 22:08:16
文檔

vue彈窗插件實戰代碼

vue彈窗插件實戰代碼:vue做移動端經常碰到彈窗的需求, 這里寫一個功能簡單的vue彈窗 popup.vue <template> <div class=popup-wrapper v-show=visible @click=hide> <div class=popup-text>{{text}}&
推薦度:
導讀vue彈窗插件實戰代碼:vue做移動端經常碰到彈窗的需求, 這里寫一個功能簡單的vue彈窗 popup.vue <template> <div class=popup-wrapper v-show=visible @click=hide> <div class=popup-text>{{text}}&

vue做移動端經常碰到彈窗的需求, 這里寫一個功能簡單的vue彈窗

popup.vue

<template>
 <div class="popup-wrapper" v-show="visible" @click="hide">
 <div class="popup-text">{{text}}</div>
 </div>
</template>

組件html結構, 外層divposition:fixed定位, 內層div顯示彈窗內容

export default {
 name: 'popup',
 props: {
 text: { //文字內容
 type: String,
 default: ''
 },
 time: { //顯示的時長
 type: Number,
 default: 3e3
 },
 },
 data(){
 return {
 visible: false
 }
 },
 methods: {
 open() {
 this.visible = true
 clearTimeout(this.timeout);
 this.$emit('show')
 if(this.time > 0){
 this.timeout = setTimeout(() => {
 this.hide()
 }, this.time)
 }
 },
 hide() {
 this.visible = false
 this.$emit('hide')
 clearTimeout(this.timeout);
 }
 }
}

popup.vue只有2個屬性: 文本和顯示時間。組件顯示隱藏由內部屬性visible控制,只暴露給外界open和hide2個方法,2個方法觸發對應的事件

測試一下

<template>
 <popup ref="popup" text="彈窗內容" :time="1e3"></popup>
</template>
<script>
import Popup from '@/components/popup'
 ...
 this.$refs.popup.open()
 ...
</script>

插件化

組件功能寫好了,但是這種調用方式顯得很累贅。舉個例子layer.js的調用就是layer.open(...)沒有import,沒有ref,當然要先全局引用layer。我們寫的彈窗能不能這么方便呢,為此需要把popup改寫成vue插件。
說是插件,但能配置屬性調用方法的還是組件本身,具體是實例化的組件,而且這個實例必須是全局單例,這樣不同vue文件喚起popup的時候才不會打架

生成單例

// plugins/popupVm.js
import Popup from '@/components/popup'
let $vm
export const factory = (Vue)=> {
 if (!$vm) {
 let Popup = Vue.extend(PopupComponent)
 $vm = new Popup({
 el: document.createElement('div')
 })
 document.body.appendChild($vm.$el)
 }
 return $vm
}

組件實例化后是添加在body上的,props不能寫在html里需要js去控制,這里寫個方法讓屬性默認值繼續發揮作用

// plugins/util.js
export const setProps = ($vm, options) => {
 const defaults = {}
 Object.keys($vm.$options.props).forEach(k => {
 defaults[k] = $vm.$options.props[k].default
 })
 const _options = _.assign({}, defaults, options)
 for (let i in _options) {
 $vm.$props[i] = _options[i]
 }
}
// plugins/popupPlugin.js
import { factory } from './popupVm'
import { setProps } from './util'

export default {
 install(Vue) {
 let $vm = factory(Vue);

 const popup = {
 open(options) {
 setProps($vm, options)
 //監聽事件
 typeof options.onShow === 'function' && $vm.$once('show', options.onShow);
 typeof options.onHide === 'function' && $vm.$once('hide', options.onHide);
 $vm.open();
 },
 hide() {
 $vm.hide()
 },
 //只配置文字
 text(text) {
 this.open({ text })
 }
 }
 
 Vue.prototype.$popup = popup
 }
}

在main.js內注冊插件

//main.js
import Vue from 'vue'
import PopupPlugin from '@/plugins/popupPlugin'

Vue.use(PopupPlugin)
在vue框架內調用就非常方便了

<script>
 ...
 this.$popup.text('彈窗消息')
 ...
</script>

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

vue彈窗插件實戰代碼

vue彈窗插件實戰代碼:vue做移動端經常碰到彈窗的需求, 這里寫一個功能簡單的vue彈窗 popup.vue <template> <div class=popup-wrapper v-show=visible @click=hide> <div class=popup-text>{{text}}&
推薦度:
標簽: VUE 代碼 彈窗
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 湖口县| 宣城市| 肃宁县| 报价| 微山县| 伊金霍洛旗| 黄龙县| 抚顺县| 长沙县| 昭通市| 油尖旺区| 定南县| 定襄县| 保德县| 通许县| 钟祥市| 桂平市| 凤冈县| 彭山县| 富宁县| 察隅县| 天柱县| 芦山县| 凌云县| 长泰县| 蛟河市| 太仓市| 任丘市| 巴里| 沂南县| 高邮市| 饶阳县| 贵定县| 卓尼县| 潞西市| 乐昌市| 禹城市| 右玉县| 贺兰县| 库伦旗| 鄯善县|