プロジェクトで Angular UI Bootstrap の datepicker ディレクティブを使用しています。当日から 5 日間だけ有効にする必要があるなど、この特定のニーズがあります。週末の場合は、それらを無効にして残りの日を有効にする必要があります。たとえば、金曜日の当日の場合、金、月、火、ウェブ、木を有効にする必要があります。これを実現するために dateDisabled プロパティを使用しています。問題は、過去のすべての月の日付も有効になっていることです。また、私が思いついた解決策はエレガントではないと思います。以下は私のマークアップとコードです。親切に私を助けてください。前もって感謝します。
<input show-weeks="false" ng-click="vm.openDate()" name="quotedate" type="text" class="form-control" ng-model-options="{timezone:'UTC'}" uib-datepicker-popup="dd/MM/yyyy" ng-model="vm.quote.date" is-open="vm.quotedate.opened" datepicker-options="vm.dateOptions" required close-text="Close" readonly="true"/>
vm.dateOptions = {
dateDisabled: disabled,
minDate: today
};
function disabled(data) {
var date = data.date,
mode = data.mode;
if (today.getDay() === 0 || today.getDay() === 6) {
return mode === 'day' && (date.getDay() === 0 || date.getDay() === 6 || date.getDate() > today.getDate() + 5 );
}else if (today.getDay() === 1) {
return mode === 'day' && (date.getDay() === 0 || date.getDay() === 6 || date.getDate() > today.getDate() + 4 );
}else {
return mode === 'day' && (date.getDay() === 0 || date.getDay() === 6 || date.getDate() > today.getDate() + 6 );
}
}