PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > Fastadmin

如何实现tab选项卡动态更新角标

管理员 2024-12-14
Fastadmin
6

在部分index页面的开发中,需要动态显示相应tab状态的角标效果image.png

论坛里没有现成的代码,自己为了实现这个效果捣鼓了不少时间才搞定。特地分享给大家

1、 首先需要修改index页面 foreach 循环的代码。修改效果如下

{foreach name="statusList1" item="vo"}            <li class="{:$Think.get.status === (string)$vo.name1 ? 'active' : ''}"><a href="#t-{$vo.name1}" data-value="{$vo.name1}" data-toggle="tab">{$vo.name2}<small id="c-{$vo.name1}" class="badge pull-right bg-red">{$vo.total}</small></a></li>{/foreach}

还需要添加一下页面控件的设计,这样可以让角标不和状态名重合起来,显示起来会好看一些

    <style>        .nav li a{position:relative; padding-right: 25px;}        .nav li a small{position:absolute;right:0px;top:0px}    </style>

其实就是在原来的基础上添加了small这个元素,并修改了一下数据的显示

name1 是数据库里设置的英文状态名,name2是中文名,total则是状态的总数

2、 修改控制器的初始化传值与新建获取状态的方法
image.png

    public function getStatusList()    {        $statusList = [            ['name1' => 'waitsubmit', 'name2' => __('Status waitsubmit')],            ['name1' => 'waitpass', 'name2' => __('Status waitpass')],            ['name1' => 'unpass', 'name2' => __('Status unpass')],            ['name1' => 'waitexecute', 'name2' => __('Status waitexecute')],            ['name1' => 'executing', 'name2' => __('Status executing')],            ['name1' => 'completion', 'name2' => __('Status completion')]        ];        foreach ($statusList as &$item) {            $item['total'] = db("task_order")->where('status',$item['name1'])->count();            if($item['total'] = 0){                $item['total'] = "";               }        }        return $statusList;    }

我新建了一个同名方法,并引用数据名为 statusList1 。这样可以和index页面foreach中name的名字对应

3、 在控制器index方法中添加 statusList1 的数据

$result = array("total" => $list->total(), "rows" => $list->items(), "statusList1" => $this->getStatusList());

4、 在js文件中的table声明后面添加 如下代码:

            var table = $("#table");                        table.on('load-success.bs.table', function (e, data) {                for (let i = 0; i < data.statusList1.length; i++) {                    $("#c-" + data.statusList1[i].name1).text(data.statusList1[i].total);                }                return false;            });

通过上述设置,便可以在刷新表格的时候,自动查询相应状态的数量,并且显示到角标上。


希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

扫码关注

qrcode

QQ交谈

回顶部