如果日期模型小于当前日期或日期已“过期”,我如何禁用每个单独的日期选择器。
我正在开发一个带有日期选择器的用户界面,用于开始和结束日期。最初,根据从后端返回的数据,UI 可以根据需要拥有尽可能多的日期选择器。用户还可以添加更多日期选择器。
这是我用来构建日期选择器的示例数据ngRepeat
。
{
"id": 1234,
"seasons": [{
"endDate": "2016-01-03",
"startDate": "2015-09-10",
"description": "2015"
}, {
"endDate": "2017-01-03",
"startDate": "2016-09-10",
"description": "2016"
}]
}
我正在创建一个用户界面,只有在开始和结束日期未过期的情况下,用户才能通过日期选择器更改日期。如果日期已过期,则需要禁用日期选择器。
我目前的方法是遍历季节数组并检查 startDate 是否小于今天。
ss.datePickerStartDateEnabled = false;
angular.forEach(ss.seasonSet.seasons, function(season, key) {
if (season.startDate < today) {
console.log('Less than today');
ss.datePickerStartDateEnabled = true;
}
});
到目前为止它有效,但它禁用了不少于今天的 startDate。
这是我的html
<div class="row" ng-repeat="s in ss.seasonSet.seasons track by $index">
<div ng-controller="DatePickerCtrl as datePicker">
<div class="col-md-3"> <!-- StartDate datepicker-->
<div class="form-group has-feedback">
<label for="username">Start Date</label>
<input
type="text"
class="form-control"
id="startDate{{$index}}" <!-- id=startDate1 -->
uib-datepicker-popup="{{}}"
ng-model="s.startDate"
is-open="datePicker.isOpen.startDate"
datepicker-options="datePicker.dateOptions"
ng-required="true"
ng-disabled="ss.datePickerStartDateEnabled"
close-text="Close"
ng-click="datePicker.open($event, 'startDate')"/>
<span class="form-control-feedback glyphicon glyphicon-calendar"></span>
</div>
<div class="form-group has-feedback">
<label for="username">End Date</label>
<input
type="text"
class="form-control"
id="endDate+{{$index}}"
uib-datepicker-popup="{{}}"
ng-model="s.endDate"
is-open="datePicker.isOpen.endDate"
datepicker-options="datePicker.dateOptions"
ng-required="true"
close-text="Close"
ng-click="datePicker.open($event, 'endDate')"/>
<span class="form-control-feedback glyphicon glyphicon-calendar"></span>
</div>
</div>
</div>
</div>
我如何id="endDate+{{$index}}"
在 datepicker 输入中使用ng-disabled="ss.datePickerStartDateEnabled"
和ss.datePickerEndtDateEnabled
在我的控制器中根据上面的条件禁用单个日期选择器。
我需要进行其他验证,例如没有重叠的日期,并且开始日期必须在上一个结束日期之后。我试图先解决简单的情况。