Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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 角度引导日期选择器更改月份事件_Angularjs_Datepicker_Angular Ui Bootstrap - Fatal编程技术网

Angularjs 角度引导日期选择器更改月份事件

Angularjs 角度引导日期选择器更改月份事件,angularjs,datepicker,angular-ui-bootstrap,Angularjs,Datepicker,Angular Ui Bootstrap,我需要调用我的后端,当用户可以使用UI Bootstrap 1.3在datepicker日历上更改月份时?您可以使用装饰器扩展datepicker指令,并在装饰器中覆盖compile函数,在activeDate上添加$watch。您可以检查日期的月份或年份是否已更改,如果已更改,则对注入到装饰器中的服务调用函数。如有必要,请输入日期,并在服务中向后端执行调用 下面和中的示例-MyService只是记录了日期,但您可以替换为调用后端 var app = angular.module('app',

我需要调用我的后端,当用户可以使用UI Bootstrap 1.3在datepicker日历上更改月份时?

您可以使用装饰器扩展datepicker指令,并在装饰器中覆盖
compile
函数,在
activeDate
上添加
$watch
。您可以检查日期的月份或年份是否已更改,如果已更改,则对注入到装饰器中的服务调用函数。如有必要,请输入日期,并在服务中向后端执行调用

下面和中的示例-
MyService
只是记录了日期,但您可以替换为调用后端

var app = angular.module('app', ['ui.bootstrap']);

angular.module('app').service('MyService', function() {
    this.doStuff = function(date) {
        console.log(date);
    }
});

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

        var link = directive.link;

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

                scope.$watch(function() {
                    return ctrls[0].activeDate;
                }, function(newValue, oldValue) {
                    if (oldValue.getMonth() !== newValue.getMonth() 
                       || oldValue.getYear() !== newValue.getYear()) {
                        MyService.doStuff(newValue);
                    }
                }, true);
            }
        };
        return $delegate;
    }]);
});

我需要调用服务器以获取当前年份的hoildays数组,并使用该数组禁用日期选择器中的日期,我尝试使用您的代码来实现,因为我对angularjs decorator是新手,但是我的控制器中的
$scope.disabled()
函数在执行
$watch
函数之前,如果我可以重写datepicker的date disabled指令或重写
$scope.disabled()
函数,那么也许我可以实现它,但不知道如何实现,您能否帮助您在服务器调用完成后调用CTRL[0].refreshView()更新datepicker我遇到“未知提供程序:datepickerDirectiveProvider”错误,你知道为什么吗?你使用的是什么版本的UI引导?在最新版本中,该指令被称为“uibDatepicker”,而不是“datepicker”。谢谢,这很有效:)我以前试过,但看起来我拼错了:)