Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何在当月之外禁用角度UI日期选择器按钮?_Angularjs_User Interface_Angular Ui Bootstrap_Bootstrap Datepicker - Fatal编程技术网

Angularjs 如何在当月之外禁用角度UI日期选择器按钮?

Angularjs 如何在当月之外禁用角度UI日期选择器按钮?,angularjs,user-interface,angular-ui-bootstrap,bootstrap-datepicker,Angularjs,User Interface,Angular Ui Bootstrap,Bootstrap Datepicker,我正在Angular中使用引导UI日期选择器,它工作正常。然而,当我在月视图中时,月外的日子在跨度上有一个名为text muted的CSS类,我已将其设置为display:none 这一切都很好-我现在看不到其他月份的日期,这符合我的设计。但是这些日期的封闭按钮仍然可以点击,而且似乎没有任何类或钩子来禁用它们。有人解决了这个问题吗?我原以为这是Datepicker指令本身的一个简单配置,但肯定忽略了答案 因此,如果我在5月,我已经关闭了4月和6月的日期,所以你看不到这些日期,但按钮仍然可以点击转

我正在Angular中使用引导UI日期选择器,它工作正常。然而,当我在月视图中时,月外的日子在跨度上有一个名为text muted的CSS类,我已将其设置为display:none

这一切都很好-我现在看不到其他月份的日期,这符合我的设计。但是这些日期的封闭按钮仍然可以点击,而且似乎没有任何类或钩子来禁用它们。有人解决了这个问题吗?我原以为这是Datepicker指令本身的一个简单配置,但肯定忽略了答案

因此,如果我在5月,我已经关闭了4月和6月的日期,所以你看不到这些日期,但按钮仍然可以点击转到其他月份的这些日期



为了澄清,如果当前日期是5月,并且我在视图中看到的是5月,我不希望看到或点击4月或6月的日期。但是,当我使用“下一个月”按钮查看6月份时,我不希望看到5月或7月的日期。

创建一个装饰器,该装饰器可以访问datepicker控制器的
activeDate
属性,该属性将告诉您查看的是哪个月。然后覆盖控制器上的
isDisabled
功能,这样,如果您在日视图中,并且月份不是活动月份,则日期将被禁用

angular.module('app').config(function($provide) {
    $provide.decorator('datepickerDirective', ['$delegate', function($delegate) {
        var directive = $delegate[0];
        var link = directive.link;

        directive.compile = function() {
            return function(scope, element, attrs, ctrls) {
                link.apply(this, arguments);

                ctrls[0].isDisabled =  function(date) {
                    return (scope.datepickerMode === 'day'
                        && (date.getMonth() !== ctrls[0].activeDate.getMonth()
                            || date.getYear() !== ctrls[0].activeDate.getYear()));
                };
            }
        };
        return $delegate;
    }]);
});

这不符合要求。您的代码仅在当月有效。好的,它会禁用当前月份之外的日期,但是我需要当前月份是您正在查看的月份,而不仅仅是它实际所在的月份。因此,如果现在是5月,我不想看到或能够点击4月或6月的日期。但是,当我使用“月份”视图中的“下一步”按钮导航到六月时,我不希望能够单击五月或七月的日期。有道理吗?明白了。在这种情况下,您需要能够访问datepicker控制器中的activeDate属性,这将需要一个装饰器。代码更新似乎有些过分,但你绝对是那个人。被接受为答案-它现在完全工作并集成到我的代码库中我尝试在angular 1.5.11中使用它,我发现ctrls[0]未定义,因此我无法覆盖isDisabled函数。有什么建议吗?澄清一下,如果当前日期是5月,并且我在视图中看到的是5月,我不想看到或点击4月或6月的日期。但是,当我使用“下个月”按钮查看六月时,我不希望看到五月或七月的日期。