요일이있는 드롭 다운 선택이 있습니다. 내가 원하는 것은 드롭 다운을 변경할 때 $scope.disabled()
메서드 를 실행하는 것입니다. 따라서 date.getDay() === 2
날짜 의 고정 번호를 변경합니다 .
$scope.disabled()
제가하고 싶은 기능에 대한 코멘트를보실 수 있습니다 .
select 요소에서 ngOptions 를 사용하고 있으므로 select를 표현식의 일부로 사용하여 각 옵션의 값 을를 사용 하여 id로 설정할 수 ng-options="day.id as day.name for day in daysOfWeek"
있습니다. 이제 선택을 변경할 때마다 selectedDay의 값이 업데이트되고 다이제스트가 시작됩니다. 즉, 아무것도 볼 필요가 없으며 비활성화 기능을 다음과 같이 단순화 할 수 있습니다.
$scope.disabled = function(date, mode) {
var day = angular.isUndefined($scope.selectedDay) ? 0 : $scope.selectedDay;
if (mode === 'day' && date.getDay() === $scope.selectedDay) {
return true;
}
return;
};
사용자가 하루를 선택하지 않은 경우 하루 값을 0으로 설정하는 검사를 추가했지만 다음을 사용하여 선택 값을 초기화 할 수도 있습니다.
$scope.selectedDay = 0;
이제 모든 것이 작동하지만 문제가 있습니다. datepicker는 렌더링되고 내부 refreshView 함수가 호출 될 때만 비활성화 된 함수를 실행합니다. 프로그래밍 방식으로 datepicker에서 새로 고침을 트리거하는 가장 쉬운 방법은 ng-model 값을 변경하는 것입니다. 이를 위해 함수를 추가했습니다.
$scope.triggerDate = function(date) {
$scope.dt = new Date(date);
}
select 요소의 변경 이벤트에서 triggerDate를 호출하여 현재 선택된 날짜로 datepicker의 값을 재설정합니다 (따라서 값을 전혀 변경하지 않음). 이는 지시문에서 강제로 새로 고치기에 충분합니다. 따라서 최종 선택은 다음과 같습니다.
<select class="form-control input-sm" ng-model="selectedDay" ng-options="day.id as day.name for day in daysOfWeek" ng-change="triggerDate(dt)"></select>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다