【发布时间】:2013-12-06 07:31:49
【问题描述】:
我有一个案例,我必须从服务器中提取数据并在结果中进行分页。有数千条数据,我计划每页显示 20 个项目。
我的计划是每次点击新页面时调用这个 Laravel 函数:
public static function GetPagingListing($limLow=null, $limTop=null) {
$data = array();
$results = DB::table('news')->orderBy('date','desc')->limit($limLow, $limTop)->get(array('id','title','category','edituser','date'));
if($results != null) {
$i = 0;
foreach($results as $k=>$v) {
$data[$i][] = $v;
$i++;
}
}
$count = DB::table('news')->count(); //this gives total count of the data, for pagination later
return Response::json(['data'=>$data, 'count'=> ($count/20)]);
}
那么我目前显示分页的方式是这样的(Angular 中的 .html):
<ul>
<li ng-class="{disabled: currentPage == 0}">
<a href ng-click="prevPage()"><i class="fa fa-angle-double-left"></i> Before</a>
</li>
<li ng-repeat="n in range(itemCount)" ng-class="{active: n == currentPage}" ng-click="setPage()">
<a href ng-bind="n + 1">1</a>
</li>
<li ng-class="{disabled: currentPage == newsList.length - 1}">
<a href ng-click="nextPage()">After <i class="fa fa-angle-double-right"></i></a>
</li>
</ul>
这一切都很好,但我的数据总数是 1000+,这就像用户可以点击的 50+ 分页。如何使分页像[<prev][1][2][3][...][21][22][23][...][50][51][52][next>](或至少是一个逻辑)?
编辑
使用 Angular UI Bootstrap 解决了我的问题:
<pagination total-items="itemCount" page="currentPage" on-select-page="setPage(page)" boundary-links="true" rotate="false" max-size="5"></pagination>
及其cdn:
<script src="//cdn.jsdelivr.net/angular.bootstrap/0.7.0/ui-bootstrap-tpls.min.js"></script>
【问题讨论】:
-
为什么这个标签是“coffeescript”?
-
因为我用
coffeescript写的angular js,但是我没有在这里贴我的angular代码
标签: php jquery angularjs coffeescript pagination