Javascript AngularJS范围错误?chrome(43)和firefox(38.0.5)上的不同结果
我最近在和angularjs闲逛,我发现了一些奇怪的事情 使用一个函数来确定存储在ng repeat内对象属性中的日期之间的日期差,我在chrome和firefox上得到了不同的结果Javascript AngularJS范围错误?chrome(43)和firefox(38.0.5)上的不同结果,javascript,angularjs,google-chrome,firefox,angularjs-ng-repeat,Javascript,Angularjs,Google Chrome,Firefox,Angularjs Ng Repeat,我最近在和angularjs闲逛,我发现了一些奇怪的事情 使用一个函数来确定存储在ng repeat内对象属性中的日期之间的日期差,我在chrome和firefox上得到了不同的结果 firefox的结果:(不正确) 铬的结果:(正确) 用于计算时差的函数: $scope.daysDiff = function (date) { var dateobj = new Date(date); var current = new Date("2015-06-28")
firefox的结果:(不正确)
铬的结果:(正确)
用于计算时差的函数:
$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
为清晰起见,添加了td标签
注意:同样的问题发生在angular 1.3中问题在于日期()对象本身。。chrome能够解析日期2015-07-7而firefox返回的日期对象无效。与2015-07-07工程罚款 工作示例
dateExpires:“2015-07-”+((i可能是@lossleader的副本)这是一个完全不同的问题
dateExpires: "2015-07-" + ((i<3) ? ("0"+(i + 7)) : (i + 7)),