sam*_*tin 6 angularjs angular-ui-bootstrap
我想将日期更改为当前所选月份的第1天.
有没有办法监控月份按钮上的点击事件?
蒂姆萨姆
Datepicker 的作用域有一个属性“activeDateId”,您可以查看该属性。当你切换月份时它会改变。
我认为最好的方法是在 datepicker 指令上创建一个“装饰器”,以便您可以向其添加功能。如果您覆盖指令的“编译”功能,则可以访问其范围。
您可以在 module.config 函数中执行此操作:
$provide.decorator('datepickerDirective', function($delegate) {
var directive = $delegate[0];
/* Override compile */
var link = directive.link;
directive.compile = function() {
return function(scope, element, attrs, ctrl) {
link.apply(this, arguments);
scope.$watch('activeDateId', function() {
console.log('switched');
});
}
};
return $delegate;
});
Run Code Online (Sandbox Code Playgroud)
编辑
我遇到了与此类似的代码问题,如果您切换月份并且这 2 个月的第一个日期在同一天,则 $watch 将不会触发。您可以通过观察 Datepicker 控制器中属性“activeDate”的值来解决此问题:
scope.$watch(function() {
return ctrl.activeDate.getTime();
}, function() {
console.log('switched');
});
Run Code Online (Sandbox Code Playgroud)