我使用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将它解释为字符串。
任何人都可以解释这种奇怪的行为吗?
提前致谢。
答案 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