我正在使用AngularJS将数据绑定到我的Laravel应用程序。我也使用Bootstrap-UI进行分页,到目前为止,事情一直在合作。
当我更改为第2页时,ng-repeat将不会显示第2页的数据。我已经检查过并且$ scope.results正在改变第2页的数据,但是ng-repeat将不会显示。它是空白的。
我尝试放置$ scope。$ watch但我总是收到错误消息,说$ digest已在进行中。
这是我的HTML代码:
cout << "I feel it's necessary to separate this message; with a semicolon\n".
我的分页HTML(bootstrap-ui)
<tr ng-repeat="result in filtered = results | filter:search | startFrom:(currentPage-1)*entryLimit | limitTo:entryLimit" class="results-table">
<td class="text-center">
[[ result.id ]]
</td>
<td>
[[ result.name ]]
</td>
<td>
[[ result.email ]]
</td>
<td>
[[ result.cpf ]]
</td>
<td class="text-center">
<span class="label label-sm" ng-class="{true: 'label-success', false: 'label-danger'}[result.active == 'Ativo']">
[[ result.active ]]
</span>
</td>
<td class="text-center">
<a href="#"><i class="fa fa-pencil font-blue"></i></a>
<a href="#"><i class="fa fa-remove font-red-flamingo"></i></a>
</td>
</tr>
我的角色代码:
<pagination class="pull-right" ng-change="getResults(currentPage)" ng-model="currentPage" num-pages="numPages" total-items="totalItems" items-per-page="entryLimit"></pagination>
答案 0 :(得分:1)
你的例子准确吗?有一些令人困惑的部分可能与您的问题有关:
您的$scope.init()
方法永远不会将page
参数传递给.get()
方法。因此,您的服务可能每次都返回相同的页面。
您的$watch('currentPage', ...)
来电观看currentPage
,但将$scope.numberPage
传递给$scope.init()
方法。即使#1中的问题不存在,我认为你打算在这里使用currentPage
而不是numberPage
。
您正在执行客户端分页以及服务器端分页:
<tr ng-repeat="result in filtered = results | filter:search | startFrom:(currentPage-1)*entryLimit | limitTo:entryLimit" class="results-table">
具体来说,这部分:
startFrom:(currentPage-1)*entryLimit | limitTo:entryLimit
您的entryLimit
设置为10,对吗?所以,让我们说你请求第2页,服务器返回10个项目(假设问题#1和#2不存在)。您的过滤器会对此进行评估:
startFrom:(2-1)*10 | limitTo:10
其中包括:
startFrom:10 | limitTo:10
但是你只有10个项目,因为服务器已经进行了分页!通过执行客户端分页,您最终得到一个空列表。
因此,要么摆脱客户端分页(startFrom
和limitTo
),要么摆脱服务器端分页(在开头加载一次)。
我可以从您的代码中看到所有内容。如果您可以在Plunker上发布完整示例,我们可以提供更多帮助。