动态限制以ng-repeat过滤

时间:2015-04-27 19:16:43

标签: angularjs angularjs-ng-repeat

我将参数传递给指令。这是limitTo

ng-repeat过滤器上需要使用的数字
<tr ng-repeat="trans in transactions | limitTo:limit = limit > 0 ? limit : 100000">

指令可能不需要上限。我可以很容易地做我上面列出的,但我不喜欢固定的上限。在我的情况下,它永远不会被击中,但它感觉马虎。

有没有人有更优雅的解决方案?

3 个答案:

答案 0 :(得分:2)

您可以传递Infinity而不是100000:

<tr ng-repeat="trans in transactions | limitTo:limit = limit > 0 ? limit : 'Infinity'">

Angular的limitTo()即使是特殊案例也可以确保它做正确的事情:

function limitToFilter() {
  return function(input, limit, begin) {
    if (Math.abs(Number(limit)) === Infinity) {
      limit = Number(limit);
    } else {
      limit = toInt(limit);
    }
    if (isNaN(limit)) return input;
    ....

答案 1 :(得分:0)

您可以定义自己的过滤器:

hp = list(filter(lambda x: x[0] > cutoff, depth_tuples))

答案 2 :(得分:0)

另一个解决方案是将限制设置为等于数组长度。

示例:我想显示带有搜索输入的分页表,当输入值与''不同时,应禁用分页,以便它可以在同一视图中显示所有已过滤的项目。

<input type="text" ng-model="searchLink" placeholder="Search">
...
<tr ng-repeat="link in links | orderBy:order:reverse | startFrom: (!searchLink || '') && ((currentPage - 1) * pageSize) | limitTo: (!searchLink && pageSize) || links.length | filter:searchLink">