我最近在使用angularjs时,我发现了一些奇怪的东西。
使用函数来确定ng-repeat中对象属性中存储的日期之间的日期差异我在chrome上获得了不同的结果,在firefox上有不同的结果
PLUNKER
来自firefox的结果:http://scr.hu/28dp/17r4y(不正确)
铬的结果:http://scr.hu/28dp/uik13(正确)
我用来计算时差的功能:
$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中多次使用它来显示或隐藏这样的元素:
<tr ng-repeat="dat in data">
...
<td><div class="inline" ng-show="daysDiff(dat.dateExpires) < 14">YES</div></td>
...
<td><div class="inline" ng-show="daysDiff(dat.dateUpdate) < 14">YES</div></td>
...
</tr>
使用ng-if时的行为完全相同
//修改
这个问题不是关于使用angular生成正确的表,而是在chrome和firefox之间生成不一致。
问题仍然是由于某种原因在Firefox中没有正确评估表达式。您可以在我上面附带的plunker示例中看到它。 尝试在chrome中打开它,然后在firefox中打开它。
//编辑#2 为清晰起见添加了标签
注意:角度1.3中也会出现同样的问题
答案 0 :(得分:0)
问题在于 Date()对象本身.. chrome能够解析日期2015-07- 7 而没有任何问题,而firefox返回无效日期宾语。与2015-07-07合作正常。
工作实例 http://plnkr.co/edit/MnhLCohlWB3Nrc2QQ2Zi?p=preview
dateExpires: "2015-07-" + ((i<3) ? ("0"+(i + 7)) : (i + 7)),
只是在日期编号之前添加了0