Angularjs limit使用Number.MAX_VALUE过滤奇怪的行为

时间:2014-11-18 15:34:12

标签: angularjs filter numbers

我使用angular v1.3.0-beta.11。我使用limitTo过滤器如下: ng-repeat =" calendarItems中的项目limitTo:calendarItemsLimit"

当我将calendarItemsLimit设置为Number.MAX_VALUE,即1.7976931348623157e + 308时,结果是angular只显示一个列表项。看起来像angularJs将Number.MAX_VALUE理解为1。

AngularJs docs说传递给limitTo过滤器的limit参数可以是数字或字符串。所以Number.MAX_VALUE是数字,但似乎angular将它解释为字符串。

任何人都可以解释这种奇怪的行为吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我已经调试了v1.3.0-beta.11的角度源。 limitTo过滤器的实现包含:

if (Math.abs(Number(limit)) === Infinity) {
  limit = Number(limit);
} else {
  limit = int(limit);
}

int函数定义如下:

function int(str) {
   return parseInt(str, 10);
}

所以当limit设置为Number.MAX_VALUE时,执行“else”块并将limit传递给parseInt函数。因此,限制将设置为1