通过
Dcat.ready
方法设置的回调函数会在所有的
JS
脚本都加载完毕后执行。
只有在模板文件中写
JS
代码才需要使用
Dcat.ready
,当在
php
代码中使用
Dcat\Admin\Admin::script
方法添加
JS
代码时是不需要使用
Dcat.ready
方法的。因为在构建页面的时候系统会自动把代码放在
Dcat.ready
事件内执行。
<div>...</div>
<script>
Dcat.ready(function () {
console.log('所有JS脚本都加载完了');
});
</script>
通过
Dcat.init
可以监听动态生成的页面元素并设置一个回调,下面来举一个简单的例子来演示用法:
假如一个元素是
JS
动态生成的,如果我们需要对这个元素绑定一个点击事件的话,那么我们通常需要这么做
<div class="selector">test</div>
<script>
Dcat.ready(function () {
$(document).off('click', '.selector').on('click', '.selector', function () {
});
</script>
上面这种做法一来比较麻烦,需要先
off
再
on
;二来无法对动态生成的元素做一些特殊处理,例如你想在
.selector
生成后改变背景颜色,这个操作就没办法做到。
在
Dcat Admin
中我们可以使用
Dcat.init
方法来监听元素动态生成,可以很方便的解决上面两个问题
<div class="selector">test</div>
<script>
Dcat.ready(function () {
Dcat.init('.selector', function ($this, id) {
$this.css({background: "#fff"});
$this.on('click', function () {
});
});
});
</script>
Dcat.init
接受两个参数
selector
需要监听的元素的
css选择器
callback
事件回调,当元素生成时触发,且只触发一次
其中
callback
回调接收两个参数如下
$this
是当前元素的jquery dom对象
id
是当前元素的id属性,如果当前元素没有id则会自动生成一个随机id
通过
Dcat.triggerReady
方法可以手动触发
JS
脚本加载完毕事件,这就意味着会自动执行在此之前所有通过
Dcat.ready
方法设置的回调函数。
{tip} 这个功能普通开发很少会用到,只有一些比较深度的组件定制会用到,比如
表单弹窗
功能就用到了此方法。
Dcat.triggerReady();
通过
Dcat.reload
方法可以调用
Pjax.reload
方法实现页面刷新和跳转功能。
刷新当前页面
Admin::script(
setTimeout(function () {
Dcat.reload();
}, 3000);
$url = admin_url('auth/users');
Admin::script(
setTimeout(function () {
Dcat.reload('{$url}');
}, 3000);
Dcat Admin
集成了Toastr插件,下面是使用方法
Dcat.success('更新成功');
Dcat.success('更新成功', '我是标题');
Dcat.success('更新成功', null, {
timeOut: 5000,
});
Dcat.error('服务器出现未知错误');
Dcat.error('服务器出现未知错误', '我是标题');
Dcat.error('服务器出现未知错误', null, {
timeOut: 5000,
});
Dcat.warning('警告');
Dcat.warning('警告', '我是标题');
Dcat.warning('警告', null, {
timeOut: 5000,
});
Dcat.info('提示信息');
Dcat.info('提示信息', '我是标题');
Dcat.info('提示信息', null, {
timeOut: 5000,
});
更多用法请参考toastr官方文档
Dcat Admin
集成了sweetalert2插件,下面是使用方法
通过Dcat.confirm
方法可以弹出确认弹窗,此方法接收5个参数
title
string
确认信息标题message
string
确认信息内容,此参数可以不传success
function
点击确认按钮触发的回调函数fail
function
点击取消按钮触发的回调函数,此参数可以不传options
object
配置参数,可参考sweetalert2官方文档
Dcat.confirm('确认要删除这行数据吗?', null, function () {
console.log('确认删除');
$.post(...);
});
Dcat.swal.success('标题');
Dcat.swal.success('标题', '内容');
Dcat.swal.success('标题', '内容', {
});
Dcat.swal.error('标题');
Dcat.swal.error('标题', '内容');
Dcat.swal.error('标题', '内容', {
});
Dcat.swal.warning('标题');
Dcat.swal.warning('标题', '内容');
Dcat.swal.warning('标题', '内容', {
});
Dcat.swal.info('标题');
Dcat.swal.info('标题', '内容');
Dcat.swal.info('标题', '内容', {
});
更多用法请参考sweetalert2官方文档
Dcat Admin
集成了layer弹出层,用法请参考官方文档
layer.open({
Dcat Admin
集成了三种常见的loading效果,在线体验点我
通过Dcat.loading
方法可以设置一个占满全屏幕的遮罩层,并在中间位置显示loading
图标。
此方法接收一个object
类型的参数:
zIndex
999991014
设置css的z-index(层重叠顺序)样式
width
string
设置loading图标宽度
color
string
#bacad6
设置loading图标的颜色
background
string
transparent
设置遮罩层背景颜色
style
string
设置loading图标的css样式
Dcat.loading();
setTimeout(function () {
Dcat.loading(false);
更改loading图标的颜色
Dcat.loading({
color: Dcat.color.primary,
});
通过$.fn.loading
方法可以把loading效果附着于当前元素,此方法同样接收一个object
类型参数:
zIndex
设置css的z-index(层重叠顺序)样式
width
string
设置loading图标宽度
color
string
#bacad6
设置loading图标的颜色
background
string
设置遮罩层背景颜色
style
string
设置loading图标的css样式
$('#card').loading();
$('#card').loading(false);
$('#card').loading({
color: Dcat.color.primary,
});
$('#card').loading({
background: '#f3f3f3',
});
$('#submit-button').buttonLoading();
$('#submit-button').buttonLoading(false);
点击a
标签同样支持loading效果
$('a').buttonLoading();
$('a').buttonLoading(false);
Dcat Admin
集成了jquery-form组件用于实现ajax
提交表单功能。
通过Dcat.Form
方法可以当即发起ajax
提交表单请求,此方法接受一个object
类型参数:
string
object
表单的 jquery 对象或者css选择器
validate
false
是否开启表单验证,可参考表单验证
errorClass
string
has-error
字段验证出错时添加的样式,一般使用默认值即可
errorContainerSelector
string
.with-errors
表单错误信息容器css选择器,一般使用默认值即可
groupSelector
string
.form-group,.form-label-group,.form-field
表单组css选择器,一般使用默认值即可
errorTemplate
string
错误信息模板,使用默认值即可
autoRedirect
false
保存成功后自动跳转
autoRemoveError
当表单值发生变化时自动移除表单错误信息
before
function
表单提交之前事件,返回false
可以阻止表单继续提交
after
function
单提交之后事件(不论成功还是失败都会触发),返回false
可以中止后续逻辑
success
function
成功事件(接口返回状态码为200
则判断为成功),返回false
可以中止后续逻辑
error
function
失败事件(接口返回状态码非200
则判断为失败),返回false
可以中止后续逻辑
<script>
Dcat.ready(function () {
$('#login-form').form({
validate: true,
before: function (fields, form, opt) {
console.log('所有表单字段的值', fields);
if (...) {
return false;
success: function (response) {
if (! response.status) {
Dcat.error(response.data.message);
return false;
Dcat.success(response.data.message);
if (data.redirect) {
Dcat.reload(response.data.value)
return false;
error: function (response) {
var errorData = JSON.parse(response.responseText);
if (errorData) {
Dcat.error(errorData.message);
} else {
console.log('提交出错', response.responseText);
return false;
});
});
</script>
如果你想要实现更细粒度的控制,可以通过类似下面这种方式自己绑定提交按钮,然后提交表单
var $form = $('#login-form');
$form.on('submit', function () {
return false;
});
function submit() {
Dcat.Form({
form: $form,
success: function (response) {
if (! response.status) {
Dcat.error(response.data.message);
return false;
Dcat.success(response.data.message);
location.href = response.data.value;
return false;
error: function () {
});
function validateForm() {
$form.validator('validate');
if ($form.find('.has-error').length > 0) {
return false;
return true;
$form.find('[type="submit"],.submit').click(function (e) {
if (validateForm() === false) {
return false;
submit();
return false;
});
Dcat Admin
集成了bootstrap-validator组件用于表单前端验证的功能,
bootstrap-validator是一款支持H5表单验证的验证器,只需把验证规则写在表单元素的属性上即可自动开启验证,非常方便。
<fieldset class="form-label-group form-group position-relative has-icon-left">
<input
minlength="5" <!-- 加上验证规则 -->
maxlength="20"
required
type="password"
class="form-control"
name="password"
<div class="form-control-position">
<i class="feather icon-lock"></i>
</div>
<label for="password">{{ trans('admin.password') }}</label>
<div class="help-block with-errors"></div>
</fieldset>
$('#xx-form').form({
validate: true
});
通过Dcat.validator.extend
方法可以扩展表单验证规则
Dcat.validator.extend('maxlength', function ($el) {
return $el.val().length > $el.attr('data-maxlength');
});
使用自定义规则验证表单
<input
type="input"
class="form-control"
name="username"
data-maxlength="20" <!-- 使用刚刚自定义的验证规则 -->
data-maxlength-error="已超出输入字符长度限制,请输入20个或以下的字符"
更多内置验证规则请参考bootstrap-validator官方文档