中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在vue中實現一個模態對話框組件

發布時間:2021-03-02 15:27:03 來源:億速云 閱讀:184 作者:戴恩恩 欄目:web開發

這篇文章主要介紹了怎么在vue中實現一個模態對話框組件,億速云小編覺得不錯,現在分享給大家,也給大家做個參考,一起跟隨億速云小編來看看吧!

為什么要使用Vue

Vue是一款友好的、多用途且高性能的JavaScript框架,使用vue可以創建可維護性和可測試性更強的代碼庫,Vue允許可以將一個網頁分割成可復用的組件,每個組件都包含屬于自己的HTML、CSS、JavaScript,以用來渲染網頁中相應的地方,所以越來越多的前端開發者使用vue。

1.首先,通過template定義一個組件

<template id="dialog">
    <div class="dialog">
      <div class="dialog_mask"></div>
      <div class="dialog_container">
        <div class="dialog_content">
          <div class="dialog_content_top">提示內容</div>
          <div class="dialog_btn">
            <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="btn" @click="close">確定</a>
            <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="btn" @click="close">取消</a>
            <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="btn" @click="login">去登錄</a>
          </div>
        </div>
      </div>
    </div>
  </template>

并添加相應的對話框樣式

/*對話框style*/
    .dialog{
    }
    .dialog_mask{
      position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: rgba(0,0,0,0.5);
    }
    .dialog_container{
        background: #fff;
  width: 300px;
  height: 120px;
  position: relative;
  border-radius: 10px;
  margin: 0 auto;
    }
    .dialog_content{
      text-align: center;
  padding-top: 30px;
    }
    .dialog_btn{
      margin-top: 20px;
    }
    .dialog_btn a{
      background: yellow;
        padding: 2px 30px;
  border-radius: 5px;
  color: #fff;
  text-decoration: none;
    width: 50px;
  display: inline-block;
    }
    .dialog_btn a:nth-child(2){
        margin-left: 20px;
    }

2.使用Vue.component注冊一個全局Vue組件,我們將這個組件叫做v-dialog,然后通過template指定這個組件

Vue.component('v-dialog', {
      template: '#dialog',
      data:function(){
        return {
        }
      },
      methods:{
      },
      created:function(){
      }
    })

3.最后,在我們需要的地方通過v-dialog標簽來引用這個組件

<v-dialog></v-dialog>

創建一個vue組件步驟大致就是這樣,但是,父組件和子組件該怎么進行通信呢?

這里主要使用props傳遞數據到子組件

修改如下上面的代碼,添加props屬性

Vue.component('v-dialog', {
      template: '#dialog',
          props:['dialogShow','msg'],
      data:function(){
        return {
        }
      },
      methods:{
      },
      created:function(){
      }
    })

可以看到我們是通過字符串數組來定義prop的,除此之外我們還可以用對象的形式來定義prop,用來為組件的 prop 指定驗證規則,如果類型錯誤,在vue中會有警告,其中 type的值可以是這些:String Number Boolean Function Object Array Symbol

props: {
    name: String,
    showDialog: {
      type: Boolean,
      default: false
    }
   }

在組件模板中通過 v-if="showDialog"判斷是否顯示或隱藏對話框,通過 v-text="msg"綁定對話框提示內容,

v-if="type==1"用于判斷對話框類型 ,顯示相應的按鈕,代碼如下:

<template id="dialog">
    <div class="dialog" v-if="showDialog">
      <div class="dialog_mask"></div>
      <div class="dialog_container">
        <div class="dialog_content">
          <div class="dialog_content_top" v-text="msg">提示內容</div>
          <div class="dialog_btn">
            <a v-if="type==1" href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="btn" @click="close">確定</a>
            <a v-if="type==2" href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="btn" @click="close">取消</a>
            <a v-if="type==2" href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="btn" @click="login">去登錄</a>
          </div>
        </div>
      </div>
    </div>
  </template>

在引用組件的地方添加 :show-dialog="showDialog" :msg="msg" :type="type"這幾個屬性,將其值傳遞給對話框組件

<v-dialog :show-dialog="showDialog" :msg="msg" :type="type"></v-dialog>

需要注意的是showDialog在組件中需要寫成show-dialog這種形式,不然會獲取不到數據

 我們在data中定義這些屬性

data: {
        msg:'',
        showDialog:false,
        type:1,// 提示類型 1單按鈕提示框 2雙按鈕提示框
      },

然后,我們在按鈕點擊提交的時候觸發彈出對話框事件

submit:function(){
          //彈出對話框組件
          if(!this.isLogin){//未登錄
            this.msg = "請先去登錄再領取金額";
            this.showDialog = !this.showDialog;
            this.type = 2;
            return;
          }
          if(this.amount){
            if(this.amount<1 || this.amount>1000){
              this.msg = "輸入金額不能低于1元大于1000";
              this.showDialog = !this.showDialog;
              this.type = 1;
            }else{
              this.msg = "領取成功,請在賬戶中心查看";
              this.showDialog = !this.showDialog;
              this.type = 1;
            }
          }else{
            this.msg = "領取金額不能為空";
            this.showDialog = !this.showDialog;
              this.type = 1;
          }
        }

這樣,我們就能彈出對話框組件了,通過msg設置不同的提示消息

那么,我們該怎么關閉這個對話框呢 ,這里就涉及到子組件需要向父組件傳遞信息了

主要通過$emit來觸發父類事件,如:this.$emit('close-dialog');
然后在父類通過v-on來監聽子類觸發的事件,v-on:close-dialog="closeDialog" ,也可簡寫寫成@close-dialog="closeDialog"

代碼如下:

在v-dialog標簽中添加@close-dialog="closeDialog"監聽子組件觸發的事件

<v-dialog :show-dialog="showDialog" :msg="msg" :type="type" @close-dialog="closeDialog"></v-dialog>

然后定義closeDialog函數修改showDialog 的狀態         

  closeDialog:function(){//關閉對話框
          this.showDialog = false;
        }

以上就是億速云小編為大家收集整理的怎么在vue中實現一個模態對話框組件,如何覺得億速云網站的內容還不錯,歡迎將億速云網站推薦給身邊好友。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

镇康县| 来宾市| 大连市| 黄骅市| 沿河| 黄龙县| 枝江市| 磐安县| 威宁| 昌邑市| 盐城市| 文山县| 马边| 二手房| 德化县| 美姑县| 汉沽区| 金湖县| 临沭县| 莲花县| 巫山县| 兴安县| 北流市| 咸丰县| 彭泽县| 朝阳县| 兰州市| 乌鲁木齐县| 秦安县| 灵宝市| 固镇县| 西宁市| 汶上县| 唐海县| 宜宾县| 安达市| 柯坪县| 建阳市| 营山县| 吴堡县| 章丘市|