【问题标题】:Angularjs limitTo filter strange behavior with Number.MAX_VALUEAngularjs 限制使用 Number.MAX_VALUE 过滤奇怪的行为
【发布时间】:2014-11-18 15:34:12
【问题描述】:

我使用 Angular v1.3.0-beta.11。我使用 limitTo 过滤器如下: ng-repeat="item in calendarItems | limitTo: calendarItemsLimit"

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

AngularJs 文档说传递给 limitTo 过滤器的限制参数可以是数字或字符串。所以 Number.MAX_VALUE 是 number ,但似乎 angular 将其解释为 string 。

谁能解释这种奇怪的行为?

提前致谢。

【问题讨论】:

    标签: angularjs filter numbers


    【解决方案1】:

    我已经为 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

    【讨论】:

      猜你喜欢
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多