【发布时间】:2015-06-22 14:19:24
【问题描述】:
我的代码解释:
下面是一个带有ng-repeat 的简单表,它循环通过ctrl.persons,并将结果存储在变量ctrl.results 中。包含一个过滤器,允许用户使用文本输入搜索结果,sliceResults 是我的Angular-UI pagination 的自定义过滤器(它根据分页的当前页面确定要显示的结果的偏移量和限制)。
<table>
<tr ng-repeat="result in ctrl.results = (ctrl.persons | filter:searchKeywords) | sliceResults: ctrl.paginationOffset : ctrl.paginationLimit">
<td>{{ $index+1 }}</td>
<td>{{ result.firstName }}</td>
<td>{{ result.lastName }}</td>
</tr>
</table>
Results : {{ ctrl.results.length }}
情况:
在代码末尾,ctrl.results.length实时返回结果数量,并在用户填写文本输入搜索结果时相应更改。
但是,当结果数量发生变化时,我的分页不会相应改变,因此显示的页数不正确(例如,它仍然可以显示 3 页,而只有 1 页)。页数基于我的控制器中的一个变量 (this.paginationTotalItems)。
问题:
当我的视图中的结果数量 (ctrl.results.length) 发生变化时,如何更新控制器中的变量 this.paginationTotalItems? (或者,有什么替代方法可以更新我的分页?)
我尝试了什么:
我远不是 AngularJS 专家,所以不要笑我!我试图在ng-change 中添加一个函数并计算结果计数,但失败了,因为它显然需要ng-model,而我看不到与ng-repeat 一起使用。
我还尝试在 ctrl.results 变量上使用 $watch,但这会导致大量控制台错误,因为它在 x 次迭代后中止。另外,我不想使用$watch,因为我读到它只适用于$scope,我不想使用它(我使用“控制器作为”语法)。
提前致谢,我会接受有助于我解决问题的答案。
【问题讨论】:
标签: javascript angularjs angular-ui-bootstrap mean-stack meanjs