Как мы можем отключить приглушенные даты в директиве angularjs bootstrap datepicker?

Мне нужно отключить все даты, которые не относятся к текущему сфокусированному месяцу. Пытался использовать атрибут date-disabled на основе выбранной даты, но он навсегда отключает даты. Даты остаются отключенными при изменении месяца.

Я подумал об альтернативном решении: ко всем датам, не относящимся к текущему месяцу, применяется класс «приглушенный текст». Пытался создать указанную ниже директиву, которая проверяла класс и отключала даты. Но это вообще не работает. Кто-нибудь может посмотреть?

HTML:

<datepicker ng-model="dt" show-weeks="false" disable-muted-dates />

JavaScript:

    angular.module('app', ['ui.bootstrap'])
    .directive('disableMutedDates',[function () {
        return {
            link:function (scope,element) {
                var datepicker = element;
                var table = angular.element(datepicker.children()[0]);
                var tbody = angular.element(table.children()[1]);
                var trs = angular.element(tbody.children());
                for (var i = trs.length - 1; i >= 0; i--) {
                    var tr = angular.element(trs[i]);
                    var tds = angular.element(tr.children());
                    for (var j = tds.length - 1; j >= 0; j--) {
                        var td = angular.element(tds[j]);
                        if (angular.element(td.children()[0]).prop('tagName') === 'BUTTON') {
                            var button = angular.element(td.children()[0]);
                            var span = angular.element(button.children()[0]);
                            if (span.hasClass('text-muted')) {
                                button.attr('disabled',true);
                            };
                        };
                    };
                };
            }
        }
    }])

PEN: http://codepen.io/cyrilpanicker/pen/qdpPjY?editors=101


person Cyril    schedule 28.06.2015    source источник
comment
Какова желаемая цель?   -  person Kirill Slatin    schedule 28.06.2015
comment
Желаемая цель - отключить все даты, не относящиеся к текущему целевому месяцу.   -  person Cyril    schedule 28.06.2015
comment
Это точно так же, как в вопросе :) Я имею в виду, что поведение по умолчанию для дат, не выбранных месяцем, переключается на месяц, к которому они принадлежат. Вы хотите таким образом отключить переключение между месяцами?   -  person Kirill Slatin    schedule 28.06.2015
comment
Нет Кирилл, я не хочу отключать переключение между месяцами. Когда месяц изменен, я хочу, чтобы для выбора были доступны только даты из этого месяца. Для выбора дат из другого месяца я хочу заставить пользователя сначала изменить месяц.   -  person Cyril    schedule 28.06.2015
comment
хм ... Я открываю ваш рабочий пример на codepen, он показывает сборщик с открытым июнь. Если я щелкну любую дату в мае в этом представлении, она изменится на май, и я могу выбрать одну из дат мая. Если щелкнуть дату июля (я вижу 11 из них), я переключусь на июль с тем же эффектом. Что случилось?   -  person Kirill Slatin    schedule 29.06.2015
comment
Кирилл, это требование, чтобы даты мая или июля не отображались в календаре на июнь. Если пользователю нужно выбрать дату в мае или июле, сначала нужно изменить месяц, а затем выбрать дату. Я знаю, это странно, но это требование.   -  person Cyril    schedule 29.06.2015
comment
Тогда вы используете неправильную терминологию. Вы не будете скрывать даты, а не отключать. Это дубликат этого stackoverflow.com/q/22544118/4573999.   -  person Kirill Slatin    schedule 29.06.2015