【Vue】用户首次登录显示dialog

【Vue】用户首次登录显示dialog

1. 背景

  • vue + element-UI
  • 应用场景
    • 用户每天第一次登录时,给出对应的弹窗提示;
    • 弹窗提示一天只会出现一次
    • 设置cookie,cookie的过期时间为次日0点

2. 实现

2.1 dialog 设计

  • 实现效果如下。
    image-20220507235834620

  • dialog标签代码如下。

<el-dialog title="公告" v-model="dialogVisible" width="30%" center>
    <!--        <span>{{this.noticeContent}}</span>-->
    <el-card class="el-dialog-div">&nbsp&nbsp我突然发现,所谓的坚强,不过是真正的不幸没有降临在自己头上。 --陈年喜《微尘》</el-card>
    <template #footer>
        <span class="dialog-footer">
            <el-button type="primary" @click="dialogVisible = false" :append-to-body="true">确 定</el-button>
        </span>
    </template>
</el-dialog>
  • style代码如下。
<style>
    .el-dialog-div{
        height: 35vh;
        font-size: 20px;
        text-align: left;
        letter-spacing:0.15em;
        overflow: auto;
        display:table-cell;
        vertical-align:middle;
        border-top: 1px solid #ebebeb;
    }
    .dialog-footer{
        font-size: 20px;
    }
</style>
  • script代码如下。
  created() {
    this.load()
  },
  methods:{
    load(){
      if (document.cookie.length > 0) {
        console.log("cookies: " + document.cookie)
        let arr = document.cookie.split('; ');//通过; 将数据转成数组
        for(let i=0;i<arr.length;i++){
          let index = arr[i].indexOf("=") //返回第一个“=”所在的位置
          if(arr[i].substring(0,index)==="time"){
            //cookie存在,将isExist设置为true
            this.isExist = true;
            break
          }
        }
      }
      // cookie不存在
      if (!this.isExist){
        this.dialogVisible = true;
        // 过期时间设置为次日凌晨
        let expiresTime = new Date();
        expiresTime.setTime(new Date().getTime() + 24*60*60*1000);
        expiresTime.setHours(0);
        expiresTime.setMinutes(0);
        expiresTime.setSeconds(0);
        window.document.cookie="time" + "=" + new Date() + ";path=/;expires=" + expiresTime;
      }
    }
  }
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要在JS中调用Vue组件并显示dialog框,同样可以先创建一个全局的dialog组件,然后在需要显示dialog的地方调用该组件。 下面是实现的步骤: 1. 创建全局的dialog组件 在Vue实例的components属性中注册一个全局的dialog组件,并在模板中显示需要展示的内容。 ```js Vue.component('dialog', { props: { title: String, content: String }, template: ` <div class="dialog"> <div class="dialog__header">{{title}}</div> <div class="dialog__content">{{content}}</div> </div> ` }); ``` 在上面的代码中,我们创建了一个名为dialog的组件,该组件接收两个props:title和content,分别表示dialog的标题和内容。在模板中,我们通过插值表达式将这两个props渲染到页面上。 2. 在需要显示dialog的地方调用该组件 在需要显示dialog的地方,可以通过Vue实例的$mount方法创建一个新的Vue实例,并将dialog组件作为选项传递给该实例的components属性。然后,将该实例的$el属性插入到DOM中,显示dialog组件。 ```js function showDialog(title, content) { let dialogInstance = new Vue({ el: document.createElement('div'), components: { 'dialog': Vue.component('dialog') }, template: '<dialog :title="title" :content="content"></dialog>', data: { title, content } }); document.body.appendChild(dialogInstance.$el); } ``` 在上面的代码中,我们创建了一个名为showDialog的函数,用于显示dialog组件。该函数通过创建一个新的Vue实例来显示dialog组件,并将该实例的$el属性插入到DOM中。在模板中,我们通过绑定数据的方式将传入的title和content渲染到页面上。 3. 隐藏dialog组件 在需要隐藏dialog的地方,可以通过销毁dialog实例来隐藏dialog组件。 ```js function hideDialog() { let dialogEl = document.querySelector('.dialog'); if (dialogEl) { dialogEl.parentNode.removeChild(dialogEl); } } ``` 在上面的代码中,我们创建了一个名为hideDialog的函数,用于隐藏dialog组件。该函数通过查询DOM中是否存在dialog元素,如果存在则删除该元素,从而隐藏dialog组件。 综上所述,我们可以通过创建全局的dialog组件,并在需要显示dialog的地方调用该组件来显示dialog框。同时,可以通过销毁dialog实例来隐藏dialog组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值