关于javascript:AngularJS范围错误? chrome(43)和firefox(38.0.5)的结果不同

AngularJS scope bug? Different results on chrome(43) and firefox(38.0.5)

最近我和angularjs一起摆弄着,我发现了一些奇怪的东西。

使用函数来确定存储在ng-repeat内的对象属性中的日期之间的日期差异我在chrome上得到了不同的结果而在firefox上有不同的结果

PLUNKER

来自firefox的结果:http://scr.hu/28dp/17r4y(不正确)
铬的结果:http://scr.hu/28dp/uik13(正确)

我用来计算时差的函数:

1
2
3
4
5
6
$scope.daysDiff = function (date) {
        var dateobj = new Date(date);
        var current = new Date("2015-06-28");
        var resultDays = Math.floor(Math.abs((current - dateobj) / (86400000))); //1k *60*60*24
        return  resultDays;
    };

我在ng-repeat中多次使用它来显示或隐藏元素,如下所示:

1
2
3
4
5
6
7
<tr ng-repeat="dat in data">
  ...
  <td>YES</td>
  ...
  <td>YES</td>
  ...
</tr>

使用ng-if时完全相同的行为

//编辑

这个问题不是关于生成带有角度的正确表格,而是关于chrome和firefox之间的不一致。

问题仍然是由于某种原因在Firefox中没有正确评估表达式。您可以在我上面附带的plunker示例中看到它。
尝试在chrome中打开它,然后在firefox中打开它。

//编辑#2
为清晰起见,添加了td标签

注意:角度1.3中也会出现同样的问题


问题在于Date()对象本身.. chrome能够解析日期2015-07-7而没有任何问题,而firefox返回了无效的日期对象。 与2015-07-07工作正常。

工作实例

1
dateExpires:"2015-07-" + ((i<3) ? ("0"+(i + 7)) : (i + 7)),

它只是在日期编号之前添加了0