Фильтр даты md-datepicker: отправка объекта из HTML в функцию фильтра md-datepicker - PullRequest
0 голосов
/ 27 октября 2018

Я создаю систему бронирования туров в AngularJS с Material Design.

Туры генерируются в DOM с ng-repeat.Каждый объект tour содержит информацию о том, в какие дни этот тур должен быть доступен.Мне нужно отправить объект tour, содержащий эту информацию, в функцию md-date-filter, но я не знаю, как это сделать.

HTML:

<div ng-repeat="tour in tours">
    <md-datepicker
        ng-model="tour.group.selectedDate"
        md-min-date="booking.visit.dateStart"
        md-max-date="booking.visit.dateEnd"
        md-date-filter="disableDepDates"
    ></md-datepicker>
</div>

Thisэто функция фильтра даты:

$scope.disableDepDates = function(date) {
    console.log(date);

    //Check date here and return true if date is ok
};

Проблема в том, что всякий раз, когда я делаю md-date-filter="disableDepDates(tour)" в HTML, объект фильтра date теряется.

Спасибо!

РЕДАКТИРОВАТЬ

Я также отметил, что когда я использую md-date-filter="disableDepDates(tour)", функция disableDepDates() будет работать самопроизвольно при загрузке страницы, когда я фокусируюсь на каком-либо элементе формы и т. Д.По умолчанию md-date-filter будет функцией, как указано здесь: https://material.angularjs.org/latest/api/directive/mdDatepicker

1 Ответ

0 голосов
/ 07 декабря 2018

что я понял из md-datepicker, так это то, что вы уже ограничиваете даты между min и max.md-date-filter будет использоваться для добавления фильтра с использованием сравнения, поэтому он будет оценивать каждую доступную дату в календаре (каждый день текущего визуального месяца, который проходит мин и макс) и будет ожидать возврата, чтобы отключить доступность этогодень или нет.Допустим, у нас есть это

<md-datepicker
        ng-model="2019-05-06"
        md-min-date="2019-04-01"
        md-max-date="2019-05-15"
        md-date-filter="disableDepDates"
    ></md-datepicker>

, и у нас есть только ['2019-04-05', '2019-04-06', '2019-05-06', '2019-05-10'], поэтому в скрипте должно быть что-то вроде

$scope.disableDepDates = function(date) {
var day = date.getFullYear() + '-' + ('0' + date.getMonth()).substr(-2) + '-' + ('0' + date.getDate()).substr(-2);
if(['2019-04-05','2019-04-06', '2019-05-06', '2019-05-10'].indexOf(day)!=-1)
 return day;
};
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...