Ошибка в AngularJS? Различные результаты на Chrome (43) и Firefox (38.0.5)

0

В последнее время я искал углы, и я обнаружил что-то странное.

Используя функцию для определения разницы дат между датами, хранящимися в свойствах объекта внутри ng-repeat, я получил разные результаты на хроме и разные в 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

//редактировать

Этот вопрос заключается не в создании правильной таблицы с угловыми, а о несогласованности между хромом и firefox.

Проблема остается в том, что выражения почему-то не оцениваются должным образом в firefox. Вы можете увидеть это в примере плункера, который я добавил выше. Попробуйте открыть его в хроме, а затем в firefox.

//edit # 2 добавлены теги td для ясности

Примечание: та же проблема возникает в угловом 1.3

Теги:
google-chrome
firefox
angularjs-ng-repeat

1 ответ

0
Лучший ответ

Проблема была с самого Date() объекта.. хром был в состоянии разобрать дату 2015-07- 7 без каких - либо проблем, в то время как светлячок вернул ошибочный объект даты. с 2015-07-07 работает отлично.

рабочий пример http://plnkr.co/edit/MnhLCohlWB3Nrc2QQ2Zi?p=preview

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

который просто добавил 0 до дня дня

Ещё вопросы

Сообщество Overcoder
Наверх
Меню