Layui想给表格定义一列统计数据?可通过AJAX输出Return返回

昨天想在Layui的数据表格添加一列与ID对应的统计数据,折腾了几个小时,这里做一下记录。

一、多模型Haswhere

最开始我的需求是联查三个表,但是看了TP文档,Hasone只能有一个Haswhere,但是可以有多个with。

也就是可以展示多个绑定的数据,但是有且只能查询其中的两个,其他的不在查询条件内。

后来没办法只有用join来连表实现,代码如下:

其中注释掉的这行,本来是想拿来做统计,也就是在field中写SUM进行统计。

实际上不行,因为join后,无论LEFT还是RIGHT,都会对最终的数据有影响,这其实也很好想明白。

所以,想在数据接口直接输出统计值,似乎很难,折腾了一会后,放弃了这个尝试。

二、AJAX return返回

数据接口中没有统计数据,我们就需要另外定义模板,也就是在设置LayUI数据表格时,增加templet,如下:

其中的templet: sumTpl,就是我们定义的模板。

注意,定义模板的方法请参考LayUI文档,我是一次成功,所以不清楚失败的情况,但是听说自定义模板位置错误的话,是没有输出的。

我放的位置是LayUI定义主入口模块的下方,数据表格的上方,也就是:

最初我是用上面的方式表达,直接AJAX请求,请求的参数是所在行的id值,返回后return。

事实上这事错误的,在ajax方法中不能直接return返回值。

常见的错误写法

* 方式:(1)同步调用 (2)在ajax函数中return值;
* 结果:返回 1。未成功获取返回值;
* 失败原因:ajax内部是一个或多个定义的函数,ajax中return返回值,;
* 返回到ajax定义函数,而不是返回到ajax外层的函数checkAccount1()。

* (1)异步调用 (2)在ajax对全局变量进行设值 (3)ajax函数外将变量return;
* 结果:返回 1。未成功获取返回值;
* 失败原因:ajax请求和后面的return result语句异步执行;
* 导致return result比result = 2先执行并返回result的值。

正确的写法

* (1)同步调用 (2)且在ajax对全局变量进行设值 (3)ajax函数外将变量return;
* 结果:返回 2。成功获取返回值;
* 成功原因:先执行result = 2;再往下执行return result。

对我最开始错误写法的修正

最终页面效果

Layui想给表格定义一列统计数据?可通过AJAX输出Return返回

原创文章,作者:蓝洛水深,如若转载,请注明出处:https://blog.lanluo.cn/10032

发表评论

登录后才能评论