最近项目开发中用到了layuiAdmin的单页版进行开发,期间遇到一些问题,在此总结一二:

单页版缓存问题

由于单页面版本的视图文件和静态资源模块都是动态加载的,所以可能存在浏览器的本地缓存问题,因此,为了避免改动后的文件未及时生效,只需在入口页面(默认为start/index.html)中,找到 layui.config ,修改其 version 的值即可。

//开发环境
version: new Date().getTime() //刷新页面,都会更新一次缓存 //生产环境
version: '1.2.0' //每次发布项目时,跟着改动下该属性值即可更新静态资源的缓存

动态模板中的 select 正确用法

当试图用动态模板输出 <select>元素 的 <option></option> 时,务必注意不要将动态模板结构放在 select 内部,而应该将 select 整体放在动态模板内,然后在遍历输出 option,如:

<script type="text/html" lay-url="" template>
<select name="" lay-filter="">
{{# layui.each(d, function(index, item){ }}
<option value="{{ item.value }}">{{ item.title }}</option>
{{# }); }}
</select>
</script>

由于 select 标签的特殊性,很多人将 <script type="text/html" lay-url="" template> </script> 放在了 select 标签的里面,导致无法正确输出相应视图,所以请务必纠正写法。

刷新动态模板

需要对一个已经渲染完毕的动态模板再次进行刷新,可以借助 view 模块的 refresh 方法

<script type="text/html" id="testID" template lay-url="" lay-data="" lay-done="">
<div lay-templateid="testID"> <!-- 注意:此处 lay-templateid 属性值需要与模版定义的 ID 值一致 -->
内容放此处
</div>
</script>

然后在需要执行模版刷新的地方执行

view('testID').refresh();

设置 table 的 token

尽管 admin.req() 方法会自动传递 token,但 layui 中涉及到接口请求的公共组件(如:table、upload)并不走 admin.req(),这时就需要你获取本地存储的 token 赋值给接口参数,方式如下:

方式一:设置单个 table 实例的 token

//设置单个 table 实例的请求 token
table.render({
elem: '#xxxx'
,url: 'url'
,headers: { //通过 request 头传递
access_token: layui.data('layuiAdmin').access_token
}
,where: { //通过参数传递
access_token: layui.data('layuiAdmin').access_token
}
});

方式二:设置全局 table 实例的 token(推荐)

//所有 table 实例均会有效,这样就不用在每个 table.render() 都设置一次 token
table.set({
headers: { //通过 request 头传递
access_token: layui.data('layuiAdmin').access_token
}
,where: { //通过参数传递
access_token: layui.data('layuiAdmin').access_token
}
});
  • 一般情况,结合实际需求,headers 和 where 二者中设置一个即可。
  • 这里 access_token 的命名对应 config.js 定义的 tokenName 的值
  • 目前upload组件没有全局设置的方法,需自行添加

设置 layedit 富文本编辑器的上传图片 token 或 额外参数

需要使用到富文本编辑器,用了layui自带的layedit,不过上传图片时报错:“请求上传接口异常”,因接口需要携带token和额外参数,修改如下:

layedit.set({
uploadImage: {
url: setter.api_url + '/admin/slide/upload'
, headers: {AccessToken: layui.data(setter.tableName).AccessToken} //这里增加headers
, data: {} //增加携带data
}
});

注意: layedit.set 放在 layedit.build 前面的任意位置即可

找到layui-src/dist/layer/modules/layedit.js,复制解压缩,搜索 uploadImage,修改为:

o.render({
url: r.url
, method: r.type
, elem: e(n).find("input")[0]
, headers: r.headers //增加携带headers,或者也可以携带data
, data: r.data //增加携带data
, done: function (e) {
0 == e.code ? (e.data = e.data || {}, v.call(t, "img", {
src: e.data.src, alt: e.data.title
}, a)) : i.msg(e.msg || "上传失败")
}
})

作者:旧旧的 <393210556@qq.com> 解决问题的方式,就是解决它一次

layuiAdmin (单页版)常见问题与解决方案的更多相关文章

  1. ThinkPHP6.0 多应用模式 部署 Layuiadmin 单页版

    TP6.0中的路由省略应用名只能用入口文件绑定应用 和 域名绑定应用,经过测试,最后得出域名绑定应用是最合适的部署方式.如果有更好的部署方案,欢迎分享.QQ:23426945 1. 下载TP6.0,引 ...

  2. 单应用模式 - Layuiadmin单页版放入TP6.0的部署方案

    thinkphp6.0.3单应用模式.layuiadmin1.4.0单页版,不需要tp的视图驱动 1. 复制 src.start 两个文件夹 2. 粘贴到 thinkphp 的 public 目录下 ...

  3. LayuiAdmin 单页版关闭当前页面tab的方式-图文

    需要关闭的时候 调用 parent.layui.admin.events.closeThisTabs() 即可执行当前页面的关闭 $.post("/index.php/WebAdmin/Wx ...

  4. layuiAdmin pro v1.x 【单页版】开发者文档

    layuiAdmin std v1.x [iframe版]开发者文档 题外 该文档适用于 layuiAdmin 专业版(单页面),阅读之前请务必确认是否与你使用的版本对应. 熟练掌握 layuiAdm ...

  5. 前端 SPA 单页应用数据统计解决方案 (ReactJS / VueJS)

    前端 SPA 单页应用数据统计解决方案 (ReactJS / VueJS) 一.百度统计的代码: UV PV 统计方式可能存在问题 在 SPA 的前端项目中 数据统计,往往就是一个比较麻烦的事情,Re ...

  6. 构建单页Web应用

    摘自前端农民工的博客 让我们先来看几个网站: coding teambition cloud9 注意这几个网站的相同点,那就是在浏览器中,做了原先“应当”在客户端做的事情.它们的界面切换非常流畅,响应 ...

  7. 构建单页Web应用——简单概述

    一.开发框架 ExtJS可以称为第一代单页应用框架的典型,它封装了各种UI组件,用户主要使用JavaScript来完成整个前端部分,甚至包括布局.随着功能逐渐增加,ExtJS的体积也逐渐增大,即使用于 ...

  8. 高效开发 Web 单页应用解决方案

    于 2017 年初,有在 Github 建立并维护一个项目:Vue Boilerplate Template,欲成就一款开箱即用 Vue + Webpack 的脚手架模版:其目标与宗旨是:根据以往经验 ...

  9. 前端单页应用SEO解决方案

    在这里只会提到Google的解决方案,日后再补充百度的解决方案 我们经常使用的单页都是#!来做应用的前端路由,因为这个在多个版本浏览器上有很好的兼容性 当Google发现URL里有#!符号,Googl ...

随机推荐

  1. tesonflow实现word2Vec

    word2Vec 是实现从原始语料中学习字词空间向量的预测模型 使用word2Vec的skip_Gram模型 import collections import math import os impo ...

  2. CDW数学小笔记

    今天我们来做一道题目. 输入正整数\(n\)(\(\le 10^{15}\)),求\(x^2+y^2=n^2\)的整数解的个数. 也就是圆心为原点,半径为\(n\)的圆上整点的数量. 为了得到更普遍的 ...

  3. 【原创】go语言学习(六)函数详解2

    目录 变量作用域和可见性 匿名函数 闭包 课后练习 变量作用域和可见性 1.全局变量量,在程序整个生命周期有效. var a int = 10 2.局部变量量,分为两种: 1)函数内定义, 2)语句句 ...

  4. 幽默的讲解六种Socket I/O模型

    很幽默的讲解六种Socket I/O模型 本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教. 一:select模型 二:WSAAsyncSele ...

  5. LOJ#2977. 「THUSCH 2017」巧克力(斯坦纳树+随机化)

    题目 题目 做法 考虑部分数据(颜色较少)的: 二分中位数\(mid\),将\(v[i]=1000+(v[i]>mid)\) 具体二分操作:然后求出包含\(K\)种颜色的联通快最小的权值和,判断 ...

  6. 鲁班学院java架构vip课程

    1.wps文档地址 https://docs.qq.com/doc/DRVNLUndvTmFSdEhO 2.百度网盘地址 https://pan.baidu.com/s/1uxaTzJZHKrsw_H ...

  7. MovingWallVelocity边界条件【翻译】

    翻译自:CFD-online 帖子地址:http://www.cfd-online.com/Forums/openfoam-solving/59646-movingwallvelocity-bound ...

  8. faster-rcnn CUDA8.0编译错误

    之前编译Faster-RCNN的时候用的都是CUDA7.5,最近换了机器,变成了CUDA8.0,果然编译出现错误了…… 参考下面这篇博客解决了问题: http://blog.csdn.net/kexi ...

  9. 【Linux性能调优一】观大局:系统平均负载load average

    要测试linux系统性能及调优,首先要从全局检查linux的平均负载 1.什么是平均负载 load average 系统平均负载,平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数, ...

  10. rsyslog使用简介

    1 把日志打到新的日志文件里面 #### RULES ####ruleset(name="remote"){ action(type="omfile" file ...