具有可选的最大最小值的角度输入验证始终无效

斯文

我正在构建一个向input ['date']元素添加一些逻辑的指令。这就是我现在所拥有的:

app.directive('calendarInput', function() {
    'use strict';
    return {
        template : '<input type="date"' +
                            'ng-model="calendarInput"' +
                            'min="{{min}}"' +
                            'max="{{max}}" />'
        replace: true,
        scope: {
            startdate : '@',
            enddate : '@',
            calendarInput: '='
        },
        restrict: 'A',
        link: function (scope, element, attrs) {
            scope.$watch('startdate', function (val) {
                if (val) {
                    var date = new Date(val);
                    scope.min = date.toIsoString().split('T')[0];
                }
            });
            scope.$watch('enddate', function (val) {
                if (val) {
                    var date = new Date(val);
                    scope.max = date.toIsoString().split('T')[0];
                }
            });
        }
    };
});

想法是重用此指令。有时只有开始日期,有时只有结束日期。像这样:

<div calendar-input="item.birthday" enddate="'1990-01-01'"></div>

不幸的是,这总是导致类的形式无效ng-invalid-min这是因为我没有提供startdate参数。

如何使最小值或最大值可选?

编辑:我正在使用Angular 1.3.9

斯文

找出了一种按需编译maxmin属性的方法

app.directive('calendarInput', function($compile) {
    'use strict';
    return {
        template : '<input type="date" class="datepicker" ng-model="omdCalendarInput" />',
        replace: true,
        scope: {
            startdate : '@',
            enddate : '@',
            calendarInput: '='
        },
        restrict: 'CA',
        link: function (scope, element, attrs) {

            var dateInput = element.find('input') // <----

            scope.$watch('startdate', function (val) {
                if (val) {
                    var date = new Date(val);
                    scope.min = date.toIsoString().split('T')[0];
                    if (!dateInput.attr('min')) { // <----
                        dateInput.attr('min', '{{min}}'); // <----
                        $compile(dateInput)(scope); // <----
                    }
                }
            });
            scope.$watch('enddate', function (val) {
                if (val) {
                    var date = new Date(val);
                    scope.max = date.toIsoString().split('T')[0];
                    if (!dateInput.attr('max')) { // <----
                        dateInput.attr('max', '{{max}}'); // <----
                        $compile(dateInput)(scope); // <----
                    }
                }
            });
        }
    };
});

相关链接


编辑:改进了上面的代码。我也将其标记为正确的答案,因为没有其他人有解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Power BI 中具有最小值和最大值的数字输入

角度4输入[type ='number']防止输入超过最小值/最大值

查找列表的最大值/最小值时,管理空列表/无效输入(Python)

如何基于选择角度动态设置输入控件的最小值和最大值

选项类型编号中的jQuery数据输入验证最小值和最大值

从数组中查找最小值和最大值,最小值始终为0

如何删除具有最小值和最大值的空值的列

角度ui滑块-动态最小值/最大值

输入值的最小值和最大值

Pyspark - 从具有最小值和最大值范围的数组中获取值

具有 NA 的多列的最小值和最大值

在pandas数据框中选择具有最小值和最大值的行

jq从具有字段的最小值或最大值的数组中选择记录

如何在组(SQL)中查找具有最小值和最大值的记录?

无法弄清楚如何使循环代码具有最小值和最大值

从具有最大值/最小值的记录中提取值

在SQLite中选择具有最大值/最小值的行

int在SOAP Web服务中是否具有最大值和最小值?

如何按比例缩小具有已知最小值和最大值的数字

ggplot中的连续色标,具有最小值和最大值

具有最小值和最大值的 geom_area 图

具有最小值、最大值和总和的 Pandas 数据框 Groupby

在特定列上连接具有最小值和最大值的行

从具有多个列的.txt文件中查找最大值,最小值

如何按比例缩小具有已知最小值和未知最大值的数字

返回数据框底部具有最大值/最小值的行(python / pandas)

具有最大值和最小值的 JSON 模式枚举

我需要分组并覆盖具有最小值-最大值的列

SQL获取具有单行的数据集中列的最小值和最大值