如何设置Angular Timepicker的最小时间和最大时间?

时间:2014-12-11 15:07:59

标签: angularjs timepicker angular-bootstrap bootstrap-datetimepicker

有没有办法为Angular的引导时间选择器设置最短时间和最长时间?使用Angular的Datepicker设置支持最小和最大日期,我我想知道Timepicker是否允许使用类似的功能。

查看Angular Documentation for Timepicker中的设置似乎没有办法实现此目的...但只是想知道是否有人熟悉实现此行为的方法。提前感谢和见解/建议!


修改

更多地了解我要做的事情:

我有两个Timepickers并排。左侧的那个允许用户选择开始时间,右侧的选择器允许用户选择结束时间。无论选择哪个开始时间,都应设置结束时间时间戳的下限,无论选择哪个结束时间,都应设置开始时间时间戳的上限。

1 个答案:

答案 0 :(得分:1)

如果你的验证工作正常,你真的只需要设置minTime或maxTime,因为一旦你的'开始'时间在'结束'时间之后,'结束'时间也在'开始'时间之前。

我想完全按照你所描述的那样做,最后写一个指令去做。

我选择'minTime'作为我'end'时间戳的属性,并将其设置为我''start'timepicker的模型。然后该指令监视两个模型的变化,如果'开始'时间改变则更新minTime,并根据'start'是否在'end'之前设置模型验证。

只要设置了ng-model,您也可以在input [time]元素上使用它。

我首先尝试使用解析器和格式化程序来避免使用$ watch,但最后却没有将模型注册为无效,直到我下次更改它为止。

这是指令。随意使用do wtf you want

directive('minTime', function (){ 
    return {
        require: 'ngModel',
        restrict: 'A',
        link: function(scope, elem, attrs, ctrl) {
            var minTime;

            scope.$watch(attrs.minTime, function(newVal) {
                minTime = newVal;
                validate();
            });

            scope.$watch(attrs.ngModel, validate);

            function validate(value) {
                ctrl.$setValidity('minTime', (minTime < ctrl.$modelValue));
                return value;
            }
        }
    };
})