日付モデルが現在の日付よりも小さい場合、または日付が「期限切れ」になっている場合、個々の日付ピッカーを無効にするにはどうすればよいですか。
開始日と終了日の日付ピッカーを使用して UI を開発しています。最初は、バックエンドから返されたデータに応じて、必要な数の日付ピッカーを 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"
}]
}
開始日と終了日が期限切れになっていない場合にのみ、ユーザーが日付ピッカーを介して日付を変更できる UI を作成しています。日付の有効期限が切れている場合は、日付ピッカーを無効にする必要があります。
私の現在のアプローチは、シーズン配列を反復処理し、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
私が行う必要がある他の検証があります。たとえば、日付が重複しておらず、開始日は前の終了日より後にする必要があります。最初に簡単なケースを解決しようとしています。
前もって感謝します。これがプランカーコードで、これがUIですが、日時ピッカーは機能していません。UI を向上させるには、フルスクリーンで表示してください。