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