繁体   English   中英

AngularJs自定义替换ng消息

[英]AngularJs custom replacement for ng-messages

我在Angular 1.2.28中创建了zz-messages指令,以替代ng-messages在ie8中工作。

(function () {
    'use strict';

    angular
        .module('app.widgets')
        .directive('zzMessages', errorContainer);


    function errorContainer() {
        // Usage:
        //     <div zz-messages="field.$error">
        //          <span zz-message="required">This field is required</span>
        //     </div>
        //     Replacement for zz-message angular library to show single error on screen at a time and hide others

        return {
            link: function ($scope, element, attrs) {
                var messageElements = element[0].querySelectorAll('[zz-message]');

                angular.forEach(messageElements, function (message) {
                    message.style.display = 'none';
                });

                $scope.$watchCollection(attrs.zzMessages, function (messages) {
                    var existingMessageOnView = false;
                    angular.forEach(messageElements, function (message) {
                        var zzMessage = angular.element(message).attr('zz-message');
                        if (!existingMessageOnView && messages[zzMessage] === true) {
                            message.style.display = 'block';
                            $(message).addClass('error-message');
                            existingMessageOnView = true;
                        } else {
                            message.style.display = 'none';
                        }
                    });
                });
            }
        }
    }

 }());

除非有特殊情况,否则所有时间都可以正常工作。

<div zz-forminput>
<label for="headquarter" class="col-md-4">Family Headquarter</label>
<div class="col-md-8">
    <input type="text" name="headquarter" id="headquarter" placeholder="K" data-ng-model="vm.userDetails.familyHQ" data-ng-maxlength="100" ng-pattern="/^[a-zA-Z0-9 ]+$/" maxlength="101">
    <div zz-messages="vm.basicDetailsForm.headquarter.$error" data-ng-if="vm.basicDetailsForm.headquarter.$dirty">
        <span zz-message="pattern">Family Headquarter can only contain alpha numeric characters</span>
        <span zz-message="maxlength">Family Headquarter cannot exceed 100 characters</span>
    </div>
</div>

我有我不需要的输入字段,但它具有ng-maxlength =“ 100”和ng-pattern。 清除该字段后,会将ng-invalid-maxlength和zz-invalid-pattern添加到输入字段。

请解决此问题。

它解决了。 问题出在我制作的自定义zzMinAlphaCharacters验证器中。 感谢你的支持 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM