gpt4 book ai didi

javascript - angular 中的 ngRequired 和自定义指令

转载 作者:行者123 更新时间:2023-11-30 05:32:23 25 4
gpt4 key购买 nike

当与 ngRequired 一起使用时,我似乎无法在 Angular 文档示例中找到智能 float 指令。

您可以通过转到 Angular 文档页面来确认这一点 https://docs.angularjs.org/guide/forms

在智能 float 示例上编辑 plunker,并添加 ng-required="false"。确保检查整个表单的有效性,而不是单个控件。

如果控件上没有输入,表单本身总是被标记为无效。

我使用的是 1.3.0-rc3 版本

最佳答案

为了允许 smartFloat 指令为空值,您应该使用 $validators 结合 $parsers 来检查浮点值的有效性.另请注意,从任何解析器返回 undefined(或不返回任何值)将标记整个表单无效。

允许空值

var FLOAT_REGEXP = /^\-?\d+((\.|\,)\d+)?$/;
app.directive('smartFloat', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
// Parse
ctrl.$parsers.unshift(function (viewValue) {
if (!viewValue) {
return ''; // <-- Don't return undefined, but empty string instead
} else if (FLOAT_REGEXP.test(viewValue)) {
return parseFloat(viewValue.replace(',', '.'));
}
});
// Validate
ctrl.$validators.float = function (viewValue) {
if (viewValue === '') {
ctrl.$setValidity('float', true); // <-- Handle empty value as valid
return true;
} else if (FLOAT_REGEXP.test(viewValue)) {
ctrl.$setValidity('float', true);
return true;
} else {
ctrl.$setValidity('float', false);
return false;
}
};
}
};
});

实例见here .

关于javascript - angular 中的 ngRequired 和自定义指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26051675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com