Changed email address will not be forwarded from one to the other in AngularJS

120 Views Asked by At

I have a form, where an email address is "saved": starting point It derives from the following code:

'use strict';

angular.module('app').factory('Emails', function ($window) 
{
  var DEFAULT = '[email protected]';

  var data = $window.eval($window.localStorage.getItem('emailaddress')) || DEFAULT;
  
  var Emails = {};

  Emails.get = function () 
  {
    return data;
  };

  Emails.set = function (emailaddress) 
  {
    data = emailaddress;
    $window.localStorage.setItem('emailaddress', $window.JSON.stringify(data));
  };

  return Emails;
});

When clicking on the button for the email address a new form opens: Popup for email address The code for this popup (email-popup.html) is the following:

<p>Email-Adresse eingeben</p>
<form name="emailForm">
    <div class="rules__popup">
        <input type="email" name="input" ng-model="emailaddress" min="1" maxlength="30" 
         ng-change="updateEmail" required ng-keypress="positiveInteger($event)" ng-controller="PdfsmtpCtrl">
    </div>
</form>

But when changing the email address herein and clicking the "OK-button" on top right, nothing happens. The email address remains the same!

To be complete, here is the code, where all starts and ends: use strict';

angular.module('app')
.controller('PdfsmtpCtrl', function ($scope, Pdfsmtp, Emails, $ionicPopup, $window)
{
    $scope.emailaddress = Emails.get();
    $scope.changeEmail = function (emailaddress)
    {
        //var regex = /^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/;
        var regex = /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;

        var popupScope = $scope.$new();
        popupScope.emailForm
        {
          name: $scope.emailaddress
        };

        $ionicPopup.prompt
        ({
            cssClass: 'rules__popup',
            templateUrl: 'pdfsmtp/email-popup.html',
            scope: $scope,
            buttons:
            [
                {
                    text: 'OK',
                    type: 'button-balanced',
                    onTap: function (e)
                    {
                        //if (isNaN($scope.emails[email]))
                        if ($scope.emailaddress === undefined && isNaN($scope.emailaddress))
                        {
                            $scope.$emit('toast', 'Keine gültige Email-Adresse!');
                            e.preventDefault();
                            $scope.emailaddress = "[email protected]";
                        }

                        else if (!$scope.emailaddress.match(regex))
                        {
                            $scope.$emit('toast', 'Keine gültige Email-Adresse!');
                            e.preventDefault();
                            $scope.emailaddress = "[email protected]";
                        }
                    }
                }
            ]
        }).then(function ()
        {
            if ($window.cordova && $window.cordova.plugins.Keyboard)
            {
                $window.cordova.plugins.Keyboard.close();
            }
        });
      };

    $scope.save = function () 
    {
        Emails.set($scope.emailaddress);
        $scope.emailsModal.hide();
    };

What is going wrong here?

0

There are 0 best solutions below