AngularJS范围错误? 铬(43)和火狐(38.0.5)

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

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

PLUNKER
来自Firefox的结果:http://scr.hu/28dp/17r4y(不正确)
来自chrome的结果: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时的行为完全相同

//编辑

这个问题不是用角度生成适当的表格,而是关于chrome和firefox之间的不一致

问题仍然是由于某种原因,表达式在Firefox中没有正确评估。 你可以在上面附加的掠夺者例子中看到它。 尝试在Chrome中打开它,然后在Firefox中打开它。

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

注意:相同的问题发生在角1.3


问题是与日期()对象本身..铬能够分析日期2015-07- 7没有任何问题,而火狐返回无效的日期对象。 与2015-07-07工作正常。

工作示例http://plnkr.co/edit/MnhLCohlWB3Nrc2QQ2Zi?p=preview

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

它只是在一天之前添加0的数字

链接地址: http://www.djcxy.com/p/96281.html

上一篇: AngularJS scope bug? Different results on chrome(43) and firefox(38.0.5)

下一篇: Javascript function definition/call difference between browsers