@HolmesInc

Как сравнить элементы в $scope?

Добрый день. Значит есть у нас есть форма, с полями name, email, password. Их хранит(или содержит, не уверен как точнее) модель newUser. выглядит это примерно так:
<input type="text" class="form-control" id="regUserName" name="regUserName" placeholder="Ваше имя" ng-model="newUser.name" required/>
<input type="email" class="form-control" id="regUserEmail" name="regUserEmail" placeholder="Email" ng-model="newUser.email" required/>
<input type="password" class="form-control" id="regUserPassword" name="regUserPassword" placeholder="Пароль" ng-model="newUser.password" required/>
<button style="float:right;" class="btn btn-primary" name="signUp" ng-disabled="regForm.$invalid || ConfirmPass(newUser)" ng-click="SignUp(newUser)">Поехали!</button>

При отправке формы запускаем функцию SignUp(). В ней следующее:
$scope.SignUp = function(newUser){
		$http.get('php_scripts/check_user.php').success(function(data){
			$scope.dbInfo = data;
		});

Наш php-скрипт срабатывает и все данные из dbInfo можно вывести через ng-repeat
(кстати в data мы получаем данные в виде [{"email":"andruonline@yandex.ua"},{"email":"lina_fox@yandex.ua"}]они заносятся в dbInfo.)
Так вот вопрос - мне нужно сравнить email с формы(то есть newUser.email) с теми что хранит dbInfo.
Заранее спасибо!
  • Вопрос задан
  • 192 просмотра
Решения вопроса 1
@HolmesInc Автор вопроса
Решил проблему несколько иначе: действительно если элементы из полученного JSON попытаться считать как $scope.dbInfo[i], то выдаст ошибку. То есть условие
if(newUser.email==$scope.dbInfo[i]){
-----
}

не сработает. Для исправления достаточно добавить префикс получаемых в JSON элементов. В моём случае в JSON было: [{"email":"andruonline@yandex.ua"},{"email":"lina_fox@yandex.ua"}]
Значит правильным условием будет с добавлением префикса email:
if(newUser.email==$scope.dbInfo[i].email){
-----
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
у нас есть один объект, у нас есть другой объект.... сравниваем средствами js.
Ответ написан
@kto_to
Если не хотите всё руками, можно привлечь Underscore/Lodash:
emaiIsExist = _.findWhere($scope.dbInfo, {email: $scope.newUser.email});

В 'emaiIsExist' будет undefined, если в массиве объектов нет объекта у которого имеется заданное поле с заданным значением. Иначе - будет содержать первый подходящий объект из массива.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы