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

그 솔루션을 고려했지만 두 가지 문제가 있습니다. 1. 내 검색은 리소스를 사용하는 작업에 따라 다르므로 리소스를 변경하면 날짜를 업데이트해야합니다. 미리로드 할 수 없습니다. 2. 클라이언트가 월을 변경하면 어떻게됩니까? ? 나는 2 년을 말할 수있는 무능력한 날짜를 얻을 필요가있다. 서버 사이드에서 할 일은 무거운 것이고, 불필요한 일도 많이해야한다. 그래서이 경우 원하는 것은 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