1

したがって、私はdatepickerで提供された毎日のリクエストを送信し、その日付のサーバーにヒットし、無効にする必要があるかどうかを返すuibDatepickerディレクティブ(https://angular-ui.github.io/bootstrap/#datepicker)ない。 問題は非同期呼び出しであり、dateDisabled関数は約束を処理しないということです。 提案がありますか?

<span uib-datepicker datepicker-options="datepickerOptions" ng-model="selectedDate"></span> 

-

$scope.datepickerOptions: { 
    dateDisabled: function (dateAndMode) { 
     if (dateAndMode.mode !== "day") { 
      return false; 
     } 
     //async call 
     TimeService.getIsDateAvailable(dateAndMode.date).then(function (data) { 
      //returns true or false 
      return data.data; 
     }); 
    } 

私は、ソリューションの多くを試してみました。私はこの答えを見つけました:Disable dates using factory response UI Bootstrap Datepicker

私はこれを私のコードに適用できません。

+1

あなたはこの質問に日付ピッカー見えるの日付を得ることの一部を見ることができます。ユーザーが別の月を選択するたびに、サーバーに42回の通話を本当にしたいですか? – georgeawg

+0

datepickerからそれらの42日間を取得する方法はありますか?だから私はすぐにそれらを渡すことができ、応答を生成する? – tonymarkoc

+0

'dateDisabled' APIは非同期で使用するようには設計されていませんでした。非同期で使用するように設計された[ngModelController $ asyncValidators API](https://docs.angularjs.org/api/ng/type/ngModel.NgModelController#$asyncValidators)の使用を検討してください。 – georgeawg

答えて

0

私はこれを無効にした日付のプリロードで修正することができました。私が必要としていたトリックは、最初にdatepickerから42の表示日をすべて取得し、それらをサーバーに渡し、それらをフィルタリングして戻します。また、月を変更した場合は、新たに表示される日付が42になるため、無効な日付を再度更新する必要があります。日付ピッカーは、それが `dateDisabled`関数7x6(42)回を呼び出すか月間変更すると angular bootstrap datepicker get visible dates (day mode)

1

無効な日付を事前に読み込んでスコープ変数に格納し、キャッシュされたデータの現在の日付を検索できます。私はこれが最善の解決策だと思う。

+0

私はその解決策を考えましたが、私は2つの問題があります 1.私の検索はリソースを変更すると日付が更新されるので、あらかじめ読み込むことができません 2.クライアントの変更月?私は2年と言うことのために無効な日付を取得する必要があります...何がserverideで行うには重いことであり、また不必要な仕事の多く。だから私が望むのは、datepickerに表示されている30日間の無効な日付だけを取得することです。月を変更すると、datepickerに表示されている日付のサーバーが無効になります。ありがとう – tonymarkoc

+1

今月を見ることができますhttp://stackoverflow.com/questions/26928861/angular-u-bootstrap-datepicker-is-there-a-way-of-detecting-when-the-month calendar – robert

+0

ロバートありがとう、私はこれを修正することができました。これはuvDatepickerDirectiveをdatepickerからすべての表示日付を取得するために拡張し、あなたが書いたように結果をプリロードするようにしました。 – tonymarkoc

関連する問題