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

Vue實(shí)現(xiàn)簡(jiǎn)單彈窗效果

 更新時(shí)間:2022年09月20日 14:25:58   作者:y-zk  
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)簡(jiǎn)單彈窗效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Vue實(shí)現(xiàn)簡(jiǎn)單彈窗效果的具體代碼,供大家參考,具體內(nèi)容如下

選中input 彈出選項(xiàng)框

顯示彈窗

首先要在components中新建兩個(gè)組件 要實(shí)現(xiàn)子組件向父組件傳值

selest.vue 里面的內(nèi)容

<template>
? <div>
? ? <h1>選擇管理員</h1>
? ? <div class="sel" @click="show">{{ str }}</div>
? ? <template v-if="bol">
? ? ? <alt @ok="getData($event)" @cancel="close"></alt>
? ? </template>
? </div>
</template>

<script>
import Alt from "./alt.vue";
export default {
? name: "Select",
? data() {
? ? return {
? ? ? bol: false,
? ? ? str: '',
? ? };
? },
? components: {
? ? Alt,
? },
? methods: {
? ? show() {
? ? ? this.bol = true;
? ? },
? ? // 獲取數(shù)據(jù)方法
? ? getData(data) {
? ? ? // 關(guān)閉彈出層
? ? ? this.bol = false;
? ? ? console.log(data);
? ? ? this.str = data;
? ? },
? ? // 關(guān)閉彈窗
? ? close() {
? ? ? // 關(guān)閉彈出層
? ? ? this.bol = false;
? ? },
? },
};
</script>

<style scoped>
.sel {
? width: 200px;
? height: 40px;
? border: 1px solid #ccc;
? line-height: 40px;
? text-align: center;
? cursor: pointer;
? margin: 0 auto;
}
</style>

alt.vue 里面的內(nèi)容

<template>
? <div class="mark">
? ? <div class="alert">
? ? ? <!-- 內(nèi)容 -->
? ? ? <div class="cont">
? ? ? ? <div>
? ? ? ? ? <!-- 左邊的列表 -->
? ? ? ? ? <dl class="left">
? ? ? ? ? ? <dt>
? ? ? ? ? ? ? <label><input type="checkbox" v-model="allBol" :checke="allBol" @change="all" />全選</label>
? ? ? ? ? ? </dt>
? ? ? ? ? ? <dd v-for="(item,index) in arrL" :key="index">
? ? ? ? ? ? ? <label>
? ? ? ? ? ? ? ? <input type="checkbox" :checked="item.bol" v-model="item.bol" @change="only(index)" />
? ? ? ? ? ? ? ? <img :src="item.headurl" alt="">
? ? ? ? ? ? ? ? <span>{{item.name}}</span>
? ? ? ? ? ? ? </label>
? ? ? ? ? ? </dd>
? ? ? ? ? </dl>
? ? ? ? </div>
? ? ? ? <div>
? ? ? ? ?<dl class="left">
? ? ? ? ? ? <dd v-for="(item,index) in arrR" :key="index">
? ? ? ? ? ? ? <label>
? ? ? ? ? ? ? ? <img :src="item.headurl" alt="">
? ? ? ? ? ? ? ? <span>{{item.name}}</span>
? ? ? ? ? ? ? </label>
? ? ? ? ? ? ? <em @click="del(item,index)">×</em>
? ? ? ? ? ? </dd>
? ? ? ? ? </dl>
? ? ? ? </div>
? ? ? </div>
? ? ? <!-- 按鈕 -->
? ? ? <div class="btns">
? ? ? ? <button @click="sure">確定</button>
? ? ? ? <button @click="cancel">取消</button>
? ? ? </div>
? ? </div>
? </div>
</template>

<script>
export default {
? data() {
? ? return {
? ? ? allBol: false,
? ? ? arrL: [
? ? ? ? { name: '花木蘭', id: 1, headurl: require('../assets/logo.png'), bol: false },
? ? ? ? { name: '拓跋燾', id: 2, headurl: require('../assets/logo.png'), bol: false },
? ? ? ? { name: '宇文泰', id: 1, headurl: require('../assets/logo.png'), bol: false },
? ? ? ? { name: '宇文成都', id: 1, headurl: require('../assets/logo.png'), bol: false },
? ? ? ? { name: '宇文護(hù)', id: 1, headurl: require('../assets/logo.png'), bol: false },
? ? ? ? { name: '宇文拓', id: 1, headurl: require('../assets/logo.png'), bol: false }
? ? ? ],
? ? ? arrR: []
? ? }
? },
? methods: {
? ? // 點(diǎn)擊全選
? ? all() {
? ? ? // 清空一個(gè)數(shù)組
? ? ? this.arrR = []; // 第一種
? ? ? // this.arrR.length = 0; // 第二種
? ? ? this.arrL.map(item => {
? ? ? ? item.bol = this.allBol;
? ? ? ? if(this.allBol) {
? ? ? ? ? this.arrR.push(item);
? ? ? ? }
? ? ? })
? ? },
? ? // 點(diǎn)擊單選
? ? only(n) {
? ? ?if (this.arrL[n].bol) {
? ? ? ?this.arrR.push(this.arrL[n])
? ? ?}else {
? ? ? ?let index = this.arrR.indexOf(this.arrL[n]);
? ? ? ?this.arrR.splice(index,1);
? ? ? ?this.allBol = false
? ? ?}
? ? },
? ? // 刪除
? ? del(obj, index) {
? ? ? let n = this.arrL.indexOf(obj);
? ? ? this.arrL[n].bol = false;
? ? ? this.arrR.splice(index, 1)
? ? },
? ? // 點(diǎn)擊確定
? ? sure() {
? ? ? let arr = [];
? ? ? this.arrR.map(item => {
? ? ? ? arr.push(item.name)
? ? ? })
? ? ? this.$emit('ok', arr.join(','));
? ? },
? ? // 點(diǎn)擊取消
? ? cancel() {
? ? ? this.$emit('cancel')
? ? },
? }
};
</script>

<style scoped>
.mark {
? width: 100%;
? height: 100%;
? background: rgba(0, 0, 0, 0.5);
? position: fixed;
? left: 0;
? top: 0;
? z-index: 1000;
? display: flex;
? align-items: center;
? justify-content: center;
}

.alert{
? background: #fff;
? width: 800px;
? height: 600px;
}
.cont {
? display: flex;
? height: 500px;
}
.cont>div {
? flex: 1;
}
.cont>div:nth-child(1) {
? border-right: 1px #ccc solid;
}
.btns {
? height: 100px;
? text-align: center;
}
.left dd {
? height: 50px;
? margin-bottom: 10px;
? position: relative;
}
.left dd label {
? display: flex;
? height: 50px;
? align-items: center;
? cursor: pointer;
}
.left dd label:hover {
? background: #f0f0f0;
}
.left dd label img {
? width: 50px;
? height: 50px;
? border-radius: 50%;
? margin: 0 5px;
}
.left dd em {
? cursor: pointer;
? position: absolute;
? width: 50px;
? height: 50px;
? font-size: 30px;
? text-align: center;
? line-height: 50px;
? right: 0;
? top: 0;
? transition: all 0.8s;
}
.left dd em:hover{
? transform: rotate(360deg);
}

</style>

在App.vue 里面寫

<template>
? <div id="app">
? ? <div id="nav">
? ? ? <router-link to="/select">選擇管理員</router-link>
? ? </div>
? ? <router-view/>
? </div>
</template>

在router 下面的index.js 里面添加路由

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'

Vue.use(VueRouter)

const routes = [
? {
? ? path: '/',
? ? name: 'Home',
? ? component: Home
? },
? {
? ? path: '/about',
? ? name: 'About',
? ? component: function () {
? ? ? return import('../views/About.vue')
? ? }
? },
? // 創(chuàng)建的路由
? {
? ? path: '/select',
? ? name: 'Select',
? ? component: () => import('../components/selest.vue')
? }
]

const router = new VueRouter({
? mode: 'history',
? base: process.env.BASE_URL,
? routes
})

export default router

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

相關(guān)文章

最新評(píng)論

镇赉县| 高唐县| 黑水县| 陕西省| 澄迈县| 湖南省| 濮阳市| 北票市| 涿鹿县| 云阳县| 武平县| 巴里| 通州市| 罗甸县| 扬中市| 琼结县| 阳曲县| 云梦县| 得荣县| 盐边县| 天峻县| 沧州市| 冀州市| 磐石市| 科技| 宾阳县| 长春市| 本溪| 盖州市| 河北省| 民权县| 弋阳县| 侯马市| 右玉县| 高阳县| 彭泽县| 阿鲁科尔沁旗| 武定县| 金堂县| 张掖市| 瓦房店市|