首先,我只想说,我搜索了Stack Overflow,找不到特定问题的答案,但如果我错过了一个,我很抱歉,这是重复的。
因此,我正在使用AngularJS制作一个任务管理器,并且我有一个包含任务列表的表。这是我的表格代码:
<thead>
<tr>
<th><b>ID</b></th>
<th><b>Title</b></th>
<th><b>Start Date</b></th>
<th><b>End Date</b></th>
<th><b>Type</b></th>
<th></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="task in tasks track by $index">
<td>{{task.id}}</td>
<td>{{task.title}}</td>
<td>{{task.start_date}}</td>
<td>{{task.end_date}}</td>
<td>{{task.type}}</td>
<td><a ng-click="remove(task)"<i class="material-icons">clear</i></a></td>
</tr>
</tbody>
正如您所看到的,每个任务都有一个ID、标题、开始日期、结束日期和类型,然后表的每一行都有删除任务的按钮。
这是函数remove(task)
:的代码
$scope.remove = function(task)
{
$scope.tasks.splice($scope.tasks.indexOf(task), 1);
};
现在这很重要。如果当前日期晚于结束日期,则应毫无问题地删除该任务。但是,如果当前日期在结束日期之前,程序需要启动一个带有字段的弹出窗口,这样用户就可以写下提前取消任务的理由
所以,我的问题是:如何将结束日期与当前日期进行比较
不要担心弹出窗口,我只需要在"if语句"方面得到帮助。我会自己写弹出窗口。
我还有moment.js,所以如果你喜欢,可以使用它。
编辑:以下是我的日期格式。我有一个日期选择器,它以这种格式给出日期:YYYY-MM-DD。然后我有一个时间选择器,它给出的时间格式是:hh:mm。这就是我将两者结合起来的方式:
$scope.tasks.push({
'id': tasks.id,
'title': tasks.title,
'start_day': tasks.start_day,
'start_time':tasks.start_time,
'start_date':tasks.start_day + " " + tasks.start_time,
'end_day': tasks.end_day,
'end_time': tasks.end_time,
'end_date':tasks.end_day + " " + tasks.end_time,
'type': tasks.type
});
因此,日期选择器日期存储在tasks.end_day
中,时间选择器时间存储在tasks.end_time
中,我将它们与'end_date':tasks.end_day + " " + tasks.end_time
结合起来,因此最终日期的格式为YYYY-MM-DD hh:MM。
来自moment.js文档:
var isSameOrBefore = moment().isSameOrBefore(task.end_date);
var isBefore = moment().isBefore(task.end_date);
在不带参数的情况下调用moment()
时,它使用当前日期。