zoukankan      html  css  js  c++  java
  • [转]vue-layer使用

    原文地址:https://www.npmjs.com/package/vue-layer?activeTab=readme

    install

    npm install vue-layer

     

    Quick Start

    在程序入口添加

    import Vue from 'vue';
    import layer from 'vue-layer'
    import 'vue-layer/lib/vue-layer.css';
     
    Vue.prototype.$layer layer(Vue);

    全局参数重置

    import Vue from 'vue';
    import layer from 'vue-layer'
    Vue.prototype.$layer layer({
        msgtime3,//目前只有一项,即msg方法的默认消失时间,单位:秒
    });

    调用

    this.$layer.alert("找不到对象!");

     

    Attribut

    {
      type0//0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
      title'信息',
      content'',
      area'auto',
      offset'auto',
      icon-1,
      btn'确定',
      time0,
      shadetrue,//是否显示遮罩
      yes'',
      cancel'',
      tips[0,{}],//支持上右下左四个方向,通过1-4进行方向设定,可以设定tips: [1, '#c00']
      tipsMorefalse,//是否允许多个tips
      shadeClosetrue,//点击遮罩是否关闭
      maxmintrue,//开启最大化最小化
      scrollbartrue//是否允许浏览器出现滚动条:默认是允许
      resizefalse //是否允许拉伸,默认是不允许
    }

     

    Method

     layer.alert(content[options, yes]);
     // options和yes可以省略, 如果您不愿意写options,则可以直接写确定按钮的函数,即yes
     // content 可以为html
     //yes如果是个function,这会自动添加参数layerid,
     (layerid)=>{
       this.$layer.close(layerid);
     }
     layer.confirm(content[options, yes, cancel]);
      // options,yes和cancel可以省略, 如果您不愿意写options,则可以直接写确定按钮的函数,即yes,或者覆盖默认的cancel方法。PS:yes和cancel方法不能互换
      //content 可以为html
       //yes,cancel如果是个function,这会自动添加参数layerid,
     (layerid)=>{
       this.$layer.close(layerid);
     }
     layer.loadding(option);
      // options ={time:3},3秒自动关闭
      //options = {content:'请等待'} //可传入文字
     layer.msg(content[options, end]);
     // options和end可以省略, 如果您不愿意写options,则可以直接写时间到期的回调即可,即end方法
     // 默认msg的关闭时间为1.5秒
     // content 可以为html
    layer.tips(content, follow, options);
    //content 可以为html
    //follow对css选择器,用来定位目标
    layer.iframe({
      content{
        content: componentName//传递的组件对象
        parentthis,//当前的vue对象
        data:{}//props
      },
      area:['800px','600px'],
      title'title',
      cancel:()=>{//关闭事件
         alert('关闭iframe');
      }
    });
    // data参数可认为是componentName的props,同时 该方法会自动添加一个key为layerid的值, 该值为创建层的id, 可以直接用来关闭该层
    // options参数直接写到json里即可,比如title
    layer.open(options);
    layer.close(id);
    layer.closeAll(type);

     

    关于this.$layer.iframe

    其实使用iframe层,除了操作方便外,主要的目的是隔离代码, 降低代码复杂度。而在vue中,组件就是功能块的基本单位了,所以vue-layer中并不存在iframe的DOM元素,这里用的都是组件。 这里的content有三个参数:

    ##### content: 此参数为组件对象, 比如

     import editFrom from './edir-form.vue';

    此处content就为editFrom即可。

    ##### parent:

    此参数其实就是当前调用layer的vue对象, 即this即可。在editForm中可以直接使用, this.$parent来获取调用layer的vue对象,然后父子传值神马的,就很easy,当然也可以直接使用vuex,就不用this.$parent了

    ##### data: 此参数可认为是editForm的props,传递到iframe后是这个数据的深拷贝,改变数据不会影响来源数据,然后你懂得。

    • 该方法会自动添加一个key为layerid的值, 该值为创建层的id, 可以直接使用
    • 该方法会自动添加一个key为lydata的值, 该值为data的浅拷贝, 当iframe要更改父窗口传递的数据的时候,可以直接使用lydata来修改,对于表单使用非常方便

    结果即为:

    methods:{
       eidt({
          this.$layer.iframe({
            content{
              content: editForm//传递的组件对象
              parentthis,//当前的vue对象
              data:{
            info:{a:1}
          }//props
            },
            area:['800px','600px'],
            title:"editForm"
          });
      }
    }

    iframe组件中

    export default {
      data({
        return {
          form{
          }
        };
      },
      props{
        info{
          typeObject,
          default(=> {
            return {};
          }
        },
        layerid{
          typeString,
          default""
        },
        lydata{
          typeObject,
          default(=> {
            return {};
          }
        }
      },
      methods{
        onSubmit({
          this.$layer.msg("提交成功"(=> {
            this.lydata.info.name this.form.name;
            this.$layer.close(this.layerid);
          });
        },
        cancel({
          this.$layer.close(this.layerid);
        }
      },
      mounted({
        this.form this.info;
      }
    };

     

    样式调整

    该包的css都为vl-notice开头, 需要重写css样式,覆盖即可

  • 相关阅读:
    CF1343E-Weights Distributing (最短路)
    科大讯飞杯-日期小助手(补)
    网络15软工个人作业5——软件工程总结
    软工网络15个人作业4——alpha阶段个人总结
    软件工程网络15个人作业3——案例分析
    软工网络15结对编程练习
    软工网络15个人阅读作业2——提问题
    软件工程网络15个人阅读作业1(201521123052 蓝锦明)
    Java课程设计 购物车系统(个人博客) 201521123052 蓝锦明
    201521123052 《Java程序设计》 第14周学习总结
  • 原文地址:https://www.cnblogs.com/dirgo/p/12375897.html
Copyright © 2011-2022 走看看