2015-03-25 3 views
0

В настоящее время я разрабатываю приложение AngularJS, которое позволяет пользователю активировать свою учетную запись, вводить пользовательские данные и отправлять данные JSON при завершении.Проверка и отправка формы AngularJS

То, что я пытаюсь достичь:
Если пользовательские данные действительны (в пределах данных в формате JSON) редирект «/ форма /» на отправить еще отображаемое сообщение об ошибке «недопустимый Неверный счет».

Актуальные проблемы:
1. Если пользователь вводит правильное членство и активация номер первого пользователя перенаправлять «/ форму /», но если пользователь вводит неверные данные, то вводит правильные данные о перенаправление не работает.
2. Я попытался выполнить недопустимое оповещение для оператора if else, но был предупрежден в течение 4/5 предупреждений в одно и то же время. Неужели почему это происходит?

Я разрабатываю этот проект на Plnkr, пожалуйста, не стесняйтесь помогать и указывать мне в прямом направлении. Спасибо.

http://plnkr.co/edit/5uPSn2ae0yFjYzujPFWm?p=preview

$scope.findMembership = function() { 
    angular.forEach($scope.membershipData.membershipNumber, function(value, key) { 
     if (key === $scope.membershipValue && value[0].activationNumber === $scope.activationValue) { 
     $location.path("/form/"); 
     } 
    }); 
    }; 

Update

formCtrl.controller('activation', function($scope, $location, $rootScope) { 
    var normalized = Object.keys($scope.membershipData.membershipNumber).map(function(k) { 
    return { key : k, val : $scope.membershipData.membershipNumber[k][0].activationNumber } 
    }); 

    normalized = [ 
    {"key":"541","val":"541X"}, 
    {"key":"4692","val":"4692X"}, 
    {"key":"45165","val":"45165X"}, 
    {"key":"5464565","val":"5464565X"}, 
    {"key":"54645651","val":"54645651X"}, 
    {"key":"D4554160N","val":"D4554160NX"} 
    ] 

    $scope.findMembership = function() { 
     if (normalized.some(function(o) { 
     return o.key == $scope.membershipValue && o.val == $scope.activationValue 
     })) $location.path("/form/") 
    } 
}); 

ответ

0

Попробуйте изменить иначе блок к этому:

otherwise({ 
    templateUrl: 'view/activation.html', 
    controller: 'activation' 
}); 

Я думаю, что редирект вызывает приложение, чтобы не быть в состоянии найдите шаблон, который он ищет. Также я бы не использовал метод $ location.path() внутри цикла angle.forEach. Возможно, нормализовать данные до истинного массива, чтобы вместо этого использовать Array.some().

Что-то вроде этого:

var normalized = Object.keys($scope.membershipData.membershipNumber).map(function(k) { 
    return { key : k, val : $scope.membershipData.membershipNumber[k][0].activationNumber } 
}); 

/* 
    normalized = [ 
    {"key":"541","val":"541X"}, 
    {"key":"4692","val":"4692X"}, 
    {"key":"45165","val":"45165X"}, 
    {"key":"5464565","val":"5464565X"}, 
    {"key":"54645651","val":"54645651X"}, 
    {"key":"D4554160N","val":"D4554160NX"} 
    ] 
*/ 

$scope.findMembership = function() { 
    if (normalized.some(function(o) { 
     return o.key == $scope.membershipValue && o.val == $scope.activationValue 
    })) $location.path("/form/") 
}