angularjs - 如何设置 Angular Timepicker 的最短时间和最长时间?

标签 angularjs timepicker angular-bootstrap bootstrap-datetimepicker

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

查看 Angular Documentation for Timepicker 中的设置似乎没有办法做到这一点......但只是想知道是否有人熟悉实现这种行为的方法。预先感谢您的见解/建议!

<小时/>

编辑:

提供有关我正在尝试做的事情的更多背景信息:

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

最佳答案

如果验证工作正常,您实际上只需要设置 minTime 或 maxTime,因为一旦您的“开始”时间在“结束”时间之后,“结束”时间也会在“开始”时间之前。

我想做的正是你所描述的,并最终编写了一个指令来做到这一点。

我选择“minTime”作为“结束”时间选择器的属性,并将其设置为“开始”时间选择器的模型。然后,该指令会监视两个模型的更改,如果“开始”时间发生更改,则更新 minTime,并根据“开始”是否在“结束”之前设置模型验证。

只要设置了 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;
            }
        }
    };
})

关于angularjs - 如何设置 Angular Timepicker 的最短时间和最长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27425976/

相关文章:

windows - Windows 8 上带有 Express 的 node-webkit "Error: listen EACCES"

javascript - 使用 ui-view 导致 Failed to instantiate module ui.router

angularjs - 如何处理 Angular-ui-router 解析中的错误

angularjs 链式淡入/淡出过渡

java - 使用 MaterialDateTimePicker 选择时间 block

java - 如何从android中的时间选择器获取小时和分钟

javascript - 动态添加/创建的 Mobiscroller 不起作用

angularjs - Angular 未知提供商 : $modalProvider <- $modal <- Controller

javascript - AngularJS Bootstrap Popover 自定义触发器

angular - 如何在 Angular Bootstrap Carousel 中拥有多个卡片项目?