首頁 > web前端 > js教程 > 主體

AngularJS 前台分頁實現

不言
發布: 2018-07-09 16:10:35
原創
1623 人瀏覽過

這篇文章主要介紹了關於AngularJS 前台分頁實現,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

分頁思路

考評員查詢,因為整體的資料量比較小,所以我們可以將分頁放到前台處理。

其實分頁的原理也很簡單,我們根據分頁選擇的頁碼數和每頁資料條數決定目前顯示的是數組中的第多少項到多少項,然後再建構分頁的參數傳入已有的分頁指令。

// 初始化分页参数
$scope.pageParams = {
    size: $stateParams.size,      // 每页数据条数
    page: $stateParams.page,      // 页码数
    last: undefined,              // 是否首页
    first: undefined,             // 是否尾页
    totalPages: undefined,        // 总页数
    totalElements: undefined,     // 总数据条数
    numberOfElements: undefined   // 当前页有几条数据
};
登入後複製

這是我們的分頁指令要的數據,所以我們就是兩個任務,第一,截取當前頁應該顯示的數據,第二生成參數傳給分頁指令。

公共方法

這是最後實作的CommonService中的公共方法。

/**
 * 重新生成分页参数与分页数据
 * @param  {每页数据条数}   size
 * @param  {页码数}        page
 * @param  {全部数据}      data
 * @param  {Function}     callback
 * callback (pageParams, currentPageData)
 * pageParams: 分页的标准
 * currentPageData: 当前页的数据
 */
self.reloadPageParamsAndData = function(size, page, data, callback) {
    // 校验传入的参数
    if (typeof size === 'undefined') {
        throw '未接收到每页数据条数信息';
    }
    if (typeof page === 'undefined') {
        throw '未接收到分页信息';
    }
    if (typeof data === 'undefined') {
        throw '未接收到数据信息';
    }
    // 计算总页数和总数据条数
    var totalPages    = Math.ceil(data.length / size);
    var totalElements = data.length;
    // 计算当前页是否为首页 是否为尾页
    var first = page === 0 ? true : false;
    var last  = page === totalPages - 1 ? true : false;
    // 根据分页参数计算当前页应该显示的数据 slice数组元素分割
    var currentPageData = data.slice(0 + page * size, size + page * size);
    // 获取当前页总共有多少条数据
    var numberOfElements = currentPageData.length;

    // 重新生成分页参数
    var pageParams = {
        size: size,                          // 每页数据条数
        page: page,                          // 页码数
        last: last,                          // 是否首页
        first: first,                        // 是否尾页
        totalPages: totalPages,              // 总页数
        totalElements: totalElements,        // 总数据条数
        numberOfElements: numberOfElements   // 当前页有几条数据
    };

    // 回调
    if (callback) {
        callback(pageParams, currentPageData);
    }
};
登入後複製

取得目前頁資料

取得目前頁的數據,我們需要知道每頁資料條數,頁碼數即可分割資料。

var currentPageData = data.slice(0 + page * size, size + page * size);
登入後複製

對資料進行分割,資料應該是從0size,加上page * size就是先前的頁數中的數據量。

建立分頁參數

// 计算总页数和总数据条数
var totalPages    = Math.ceil(data.length / size);
var totalElements = data.length;
// 计算当前页是否为首页 是否为尾页
var first = page === 0 ? true : false;
var last  = page === totalPages - 1 ? true : false;
// 获取当前页总共有多少条数据
var numberOfElements = currentPageData.length;
登入後複製

資料總數除以每頁資料條數向上取整得到總頁數。

若頁數為0,則為首頁;若頁數為總頁數減1,則為尾頁。

<yunzhi-page></yunzhi-page>
登入後複製

AngularJS 前台分頁實現

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

AngularJS導出Excel指令

#AngularJS 文件閱讀的指令scope


#

以上是AngularJS 前台分頁實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!