AngularJs ng-if сравнивает даты

Я хочу сравнить две даты в ng-если это то, как выглядит мой нефритовый файл.

li.list-group-item(ng-if="app.Segments[0].StartDate.getTime() > date.getTime()")
    div.row
        div.col-xs-12
            span
                i.fa.fa-plus-square

Надеюсь, этот код добавит li в мой пользовательский интерфейс, если дата начала первого сегмента будет позже сегодняшнего дня.

$scope.date = new Date();
$scope.app = {
    Segments: [{
       StartDate: 2014-11-15T04:00:00.000Z
       EndDate: 2014-11-20T04:00:00.000Z
    },
    {
        StartDate: 2014-11-21T04:00:00.000Z
        EndDate: 2014-11-25T04:00:00.000Z
    }]

}

Есть ли способ заставить это работать?


person Dalton Shehan    schedule 18.10.2014    source источник
comment
Я предполагаю, что эти сегменты на самом деле являются строками?   -  person Josh    schedule 18.10.2014
comment
Они хранятся как объекты даты в mongoDB и загружаются в мой контроллер. Я просто пытался показать, как выглядели данные.   -  person Dalton Shehan    schedule 18.10.2014


Ответы (2)


Если они являются объектом даты, просто сравните их напрямую без .getTime()

$scope.date2005 = new Date('2005/01/01');
$scope.date2006 = new Date('2006-01-01T04:00:00.000Z');
<div ng-if="date2005 > date2006">date2005 > date2006</div> <!-- won't show -->
<div ng-if="date2006 > date2005">date2006 > date2005</div> <!-- will show -->

http://plnkr.co/edit/fNB11U6KmFszdV3lMAPJ?p=preview

person laggingreflex    schedule 18.10.2014
comment
хорошо, что это определенно ответило на мой вопрос. Я думаю, что моя проблема в том, что объекты даты, поступающие из монго, возвращаются в виде строк, а не как объекты, но это может быть потому, что это были тестовые данные, которые я ввел вручную и сделал это неправильно. - person Dalton Shehan; 18.10.2014
comment
@DaltonShehan Вы можете просто превратить его в новый объект даты с помощью такой строки: new Date('2006-01-01T04:00:00.000Z') - person laggingreflex; 18.10.2014
comment
Именно это я и сделал, спасибо за помощь. - person Dalton Shehan; 18.10.2014
comment
@DaltonShehan, вы можете сравнивать строки с неравенством, и вы должны получить тот же результат, что и сравнение даты с неравенством, если строка имеет одинаковый формат для обеих дат. - person steampowered; 02.06.2017

Angular может напрямую сравнивать дату, если они правильно отформатированы:

Посмотреть

li.list-group-item(ng-if="app.Segments[0].StartDate > now")

контроллер

$scope.now = new Date();
$scope.now.toISOString();
person Sebastien Horin    schedule 20.01.2016