zoukankan      html  css  js  c++  java
  • layui iframe版点击左侧菜单栏实现加载等待动画

    在这里插入图片描述
    最近做项目使用到了layui,但是很多功能都不太清楚,在这里记录一下。
    我使用的是layui iframe版,它是使用lay-href来进行跳转,同时使用标签页来对已打开的框架进行管理。

    index.html

    <div id="LAY_app">
        <div class="layui-layout layui-layout-admin">
            <!--头部-->
            <div th:replace="~{public/header::header('赵六')}"></div>
            <!-- 侧边菜单 -->
            <div th:replace="~{public/side::side}"></div>
            <!-- 页面标签 -->
            <div th:replace="~{public/pageTabs::pageTabs}"></div>
    
            <!-- 主体内容 -->
            <div class="layui-body" id="LAY_app_body">
                <div class="layadmin-tabsbody-item layui-show">
                    <iframe th:src="@{/user/welcome}" id="iframeMain" frameborder="0" class="layadmin-iframe"></iframe>
                </div>
            </div>
    
            <!-- 辅助元素,一般用于移动设备下遮罩 -->
            <div class="layadmin-body-shade" layadmin-event="shade"></div>
        </div>
    </div>
    

    上面是index页body标签内的主要代码,我使用了thymeleaf对公共部分进行了抽取(其实没啥必要)。

    <html xmlns:th="http://www.thymeleaf.org">
    <!-- 侧边菜单 -->
    <div class="layui-side layui-side-menu" th:fragment="side">
        <div class="layui-side-scroll">
            <div class="layui-logo" lay-href="home/console.html">
                <span>爱心宠物管理</span>
            </div>
    
            <ul class="layui-nav layui-nav-tree" lay-shrink="all" id="LAY-system-side-menu" lay-filter="layadmin-system-side-menu">
                <li data-name="home" class="layui-nav-item">
                    <a href="javascript:;" lay-tips="兽医信息" lay-direction="2">
                        <i class="layui-icon layui-icon-home"></i>
                        <cite>兽医信息</cite>
                    </a>
                    <dl class="layui-nav-child">
                        <dd data-name="">
                            <a layadmin-event="refresh" lay-href='../vets/info'>基本信息</a>
                        </dd>
                    </dl>
                </li>
                <li data-name="senior" class="layui-nav-item">
                    <a href="javascript:;" lay-tips="萌宠管理" lay-direction="2">
                        <i class="layui-icon layui-icon-senior"></i>
                        <cite>萌宠管理</cite>
                    </a>
                    <dl class="layui-nav-child">
                        <dd>
                            <a layadmin-event="refresh" lay-href="../pets/toInfo">萌宠信息</a>
                        </dd>
                        <dd>
                            <a layadmin-event="refresh" lay-href="../pets/toInsert">新增萌宠</a>
                        </dd>
                    </dl>
                </li>
                <li data-name="user" class="layui-nav-item">
                    <a href="javascript:;" lay-tips="客户管理" lay-direction="2">
                        <i class="layui-icon layui-icon-user"></i>
                        <cite>客户管理</cite>
                    </a>
                    <dl class="layui-nav-child">
                        <dd>
                            <a layadmin-event="refresh" lay-href="../owners/">客户信息</a>
                        </dd>
                        <dd>
                            <a layadmin-event="refresh" lay-href="../owners/toInsert">新增客户</a>
                        </dd>
                    </dl>
                </li>
            </ul>
        </div>
    </div>
    </html>
    

    上面是侧边菜单的主要代码。

    需求

    目前的需求就是点击a标签之后有时因为服务器比较慢,页面加载需要时间,需要加一个等待层。

    实现

    1. 在index.html页面中加入如下代码:

      $(function(){
          $('dd > a').click(function (e) {
                  e.preventDefault();
                  layui.config({
                      base: '../layuiadmin/' //静态资源所在路径
                  }).extend({
                      index: 'lib/index' //主入口模块
                  }).use(['layer', 'jquery'], function () {
                      layer.load();       //在父窗口上加载等待层
                  });
            }); 
      });
      
    2. 在a标签所指的页面中添加

      parent.layer.closeAll();
      

      例如,在某个页面中:

      <script>
          layui.config({
              base: '../layuiadmin/' //静态资源所在路径
          }).extend({
              index: 'lib/index' //主入口模块
          }).use(['index', 'set'],function () {
              var $ = layui.$
                  , layer = layui.layer
                  , form = layui.form;
              parent.layer.closeAll();  //关闭遮罩层
          //其它代码
      </script>
      

      也可以放在表格加载完成之后,根据实际情况而定。

    其它说明

    在上述操作之后,已经可以完成加载层,但是layui第一次点击链接是请求服务器端,而第一次点击之后都是默认先从标签页查找,如果找不到才从服务器请求,这样的话相当于第一次点击之后,链接所指页面就不会刷新,也就不会加载初始化函数,那么遮罩层就不会被关闭。为了解决这个问题,我们需要为链接指定刷新事件。

     <dd>
          <a layadmin-event="refresh" lay-href="../owners/">客户信息</a>
    </dd>
    
  • 相关阅读:
    JS开发技巧
    Git push 常见用法
    关闭浏览器标签
    vue 样式穿透 watch深度监听
    Git Commit Template 提交模板
    常用git stash命令:
    Windows下安装及使用NVM
    JS正则表达式
    js转码
    多行文本溢出显示省略号(…)全攻略
  • 原文地址:https://www.cnblogs.com/zwscode/p/14284049.html
Copyright © 2011-2022 走看看