为什么要自定义模块呢?好处很多、比如可以大量重用代码......
根据layui官方的文档说明、首先第一步是要确定你要扩展的模块名称
现在做的是登录功能、因此扩展模块名叫 login
使用layui.define()方法来扩展模块、当然模块中你也可以使用layui的其他方法、如下
layui.define('layer', callback);
在定义扩展模块的时候、我需要使用layui的layer模块、然后在回调函数中定义自己的方法
layui.define(["layer","jquery"],function (exports) {
var obj = {
login : function (url,data,$,targetUrl) {
$.post(url,{code:data.code},function (res) {
if (res.code&&res.code==400){
layer.msg(res.msg,{icon:1},function () {
window.location.href = targetUrl;
});
}else{
layer.msg(res.msg,{icon:1},function () {
window.location.href = targetUrl;
});
}
});
}
}
exports("login",obj);
});
上述代码中定义了一个login模块、以便在我登录的时候、不需要写过度的代码即可实现登录、让页面看起来更简洁
那么模块定义完了、怎么使用呢?
我们遵循 layui 的模块规范建立一个入口文件,并通过 layui.use() 方式来加载该入口文件,最终使用
layui.config({
base: '/static/admin/js/module/'//存放新模块的目录,注意,不是layui的模块目录
}).use(['jquery','element','form','login'],function () {
var $ = layui.jquery,
form = layui.form,
element = layui.element,
login = layui.login;
form.on("submit(subBtn)",function (data) {
//获取表单的值
var field = data.field;
// url部分是使用TP的方法生成的、这里不用过多的研究
login.login("{:url('Login/doLogin')}",field,$,"{:url('Index/index')}");
return false;
});
});
在登录的时候、直接将参数传递过去即可。展示的效果如下