Hi,

I am trying to create a directive for an e-mail input. Everything seems 
okay except for the validation of the email address format. When I output 
to console the ngModel also doesn't seem to get updated. When I inspect 
with ng-controller the model values do get updated but not within the 
controller.

The code of the directive html

<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
    <input class="mdl-textfield__input" type="email" name="{{name}}" 
id="reg-{{name}}" ng-model="model" ng-blur="setBlur()" />
    <label class="mdl-textfield__label" 
ng-class="{'ba-textfield__label-error':showErrorPanel()}" 
for="reg-{{name}}">{{label}}</label>
    <div ng-show="showErrorPanel()">
        <span class="ba-textfield__error" 
ng-show="errorRequired()">{{requiredMessage}}</span>
        <span class="ba-textfield__error" 
ng-show="errorEmail()">{{formatMessage}}</span>
    </div>
</div>

The code of the email field directive

.directive("emailInput", [function () {
        return {
            restrict: "E",
            replace: true,
            templateUrl: "email-field.html",
            require: 'ngModel',
            scope: {
                model: '=ngModel',
                name: '@name',
                label: '@label',
                required: '@required',
                requiredMessage: '@requiredMessage',
                formatMessage: '@formatMessage'
            },
            link: function (scope, element, attrs, ngModel) {

                //set default values
                if (scope.requiredMessage) { scope.requiredMessage = 
'Required'; }
                if (scope.formatMessage) { scope.formatMessage = 'Not 
valid'; }

                //get input element
                element.children()[0].required = 
scope.required.toLowerCase() == "true";

                //register element with MDL
                componentHandler.upgradeElement(element[0]);

                scope.showErrorPanel = function () {
                    return ngModel.$submitted || ngModel.$touched;
                };
                scope.errorRequired = function () {
                    return ngModel.$error.required;
                };
                scope.errorEmail = function () {
                    return ngModel.$error.email;
                };
                scope.setBlur = function () {
                    ngModel.$setTouched();
                };

            }
        }
    }])

Please help!!!! I have been stuck on this issue for two days now, can't 
figure out what I am doing wrong.

Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to angular+unsubscr...@googlegroups.com.
To post to this group, send email to angular@googlegroups.com.
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to