md-datepicker日期过滤器:将对象从HTML发送到md-date-filter函数

时间:2018-10-27 18:28:34

标签: angularjs datepicker material-design

我正在使用Material Design在AngularJS中创建旅游预订系统。

游览是通过ng-repeat生成到DOM中的。每个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>

这是日期过滤器功能:

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

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

问题是,每当我在HTML中执行md-date-filter="disableDepDates(tour)"时,date过滤器对象都会丢失。

谢谢!

编辑

我还注意到,当我使用md-date-filter="disableDepDates(tour)"时,只要我关注任何表单元素等,disableDepDates()函数都会在页面加载时自发运行。默认情况下,md-date-filter将如下所述: https://material.angularjs.org/latest/api/directive/mdDatepicker

1 个答案:

答案 0 :(得分:0)

我从md-datepicker那里了解到,您已经将日期限制在最小和最大之间。 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;
};
});