设置AngularJS指令的多个输入的有效性

前端之家收集整理的这篇文章主要介绍了设置AngularJS指令的多个输入的有效性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试创建一个指令,当一个控件的值发生更改时,该指令可用于重置组中多个输入控件的验证状态.组由 HTML中指令集的属性标识.
例如: – 当用户更改其中一个控件输入值时,From Date和To Date输入都会重置有效性状态

这就是我到目前为止所拥有的

JS /角

angular.module('myModule').directive('groupedInputs',function () {
    return {
        restrict: 'A',require: '?ngModel',link: function (scope,element,attrs,ctrl) {
            element.on('change',function () {

                // Resetting own validity
                scope.$apply(ctrl.$setValidity('server',true));

                // Here I need to set the validity of the controls which
                // have the `GroupedInputs` directive with the 
                // same  attribute value
            });
        }
    };
});

HTML

<input name="FromDate" type="date" class="form-control" ng-model="model.FromDate" grouped-inputs="FromToDates">
<input name="ToDate" type="date" class="form-control" ng-model="model.ToDate" grouped-inputs="FromToDates">

它可以重置自己的输入控件的有效性,但不能使用指令和相同的属性值访问其他输入控件.通过查询具有相同属性的输入,访问其他控件的最佳角度方式是什么?

我会尝试通过实现帮助对象来存储组元素控制器以及添加到组中的方法以及组中所有元素的setValidity来解决此问题.

像这样的东西:

angular.module('myModule').directive('groupedInputs',function() {

    var groupControls = {
        groups: {},add: function(name,ctrl) {
            this.groups[name] = this.groups[name] || [];
            this.groups[name].push(ctrl);
        },setValidity: function(name,key,value) {
            this.groups[name].forEach(function(ctrl) {
                ctrl.$setValidity(key,value);
            });
        }
    };

    return {
        restrict: 'A',link: function(scope,ctrl) {

            // Add element controller to the group
            groupControls.add(attrs.groupedInputs,ctrl);

            element.on('change',function() {

                // When needed,set validity of elements in the group
                groupControls.setValidity(attrs.groupedInputs,'server',false);
                scope.$apply();

            });
        }
    };
});

演示:http://plnkr.co/edit/fusaaN6k9J5SZ7iQA97V?p=preview

猜你在找的Angularjs相关文章