第三方开发时如何新增分页菜单

同步载入数据时的菜单使用

controller里面的使用范例:

public function actionIndex($page = 0)
{
    $data = [];
    $query = Cards::find();
    // 获得总的数目
    $data['total'] = $query->count();
    // 每页显示的数目为20条
    $data['cards'] = $query
        ->orderBy('id desc')
        ->limit(20)
        ->offset($page*20)            
        ->all();

    return $this->render('../crm/cards/index.tpl',['data' => $data]);
}

在菜单对应的位置引入widget:

// model表明这个菜单是同步的方式来分页,还是通过异步的方式来获取分页结果
// model {sync: '同步方式','ajax':'异步的方式'}
// 页面中存在多个的导航的时候需要新增一个domid,用来区分不同的菜单
<%widget
  name='juke:widget/common/pagination/pagination.tpl'
  domid = 'chat'
  model = 'ajax'
%>

=====

异步载入数据时的菜单使用

controller里面的使用范例:

同上

在菜单对应的位置引入widget:

同上

页面的js引入对应的js逻辑:

pagination = paginationArr['default'];
// 因为页面也有同步内容的菜单,所以这边需要手动再指定一次类型
pagination.type = 'ajax';
pagination.getServerDataFunction = getDataFromServer;
// getDataFromServer 是具体的页面js逻辑中从服务器获取数据的方法
function getDataFromServer(){
    // 通过验证
    params = {
        actionType: 'getData',
        // 指定分页
        page: pagination.current
    };
    $.ajax({
        type       : 'get',
        dataType     : 'json',
        data: params,
        url        : 'index.php?r=cardmember/index',
        complete   : function() {},
        success    : function(data) {
            if(data.total){
                // 返回数据之后配置导航
                pagination.set(data.total, pagination.current);
            }
        } 
    });         
}
getDataFromServer();

页面中有多个菜单的情况

必然是一个同步,多个异步,或者是单纯的多个异步菜单