AngularJS在页面更改时没有刷新ng-repeat

时间:2015-07-10 13:47:10

标签: angularjs

我正在使用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>

1 个答案:

答案 0 :(得分:1)

你的例子准确吗?有一些令人困惑的部分可能与您的问题有关:

  1. 您的$scope.init()方法永远不会将page参数传递给.get()方法。因此,您的服务可能每次都返回相同的页面。

  2. 您的$watch('currentPage', ...)来电观看currentPage,但将$scope.numberPage传递给$scope.init()方法。即使#1中的问题不存在,我认为你打算在这里使用currentPage而不是numberPage

  3. 您正在执行客户端分页以及服务器端分页:

    <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个项目,因为服务器已经进行了分页!通过执行客户端分页,您最终得到一个空列表。

    因此,要么摆脱客户端分页(startFromlimitTo),要么摆脱服务器端分页(在开头加载一次)。

  4. 我可以从您的代码中看到所有内容。如果您可以在Plunker上发布完整示例,我们可以提供更多帮助。