Инициализация контроллера: повышение читабельности кода
Добрый день, форумчане! Помогите сделать код более читабельным)
Длинные цепочки для доступа к аттрибуту усложняют читабельность значительно, и это осложняет жизнь. Я привожу код, который не работает. Потому что, когда вызывается функция инициализации контроллера, $scope.signUpForm === undefined (как и $scope.user). Как мне инициализировать контроллер так, что бы не писать портянку в checkRepeatePassword, но задать signUpForm и user до вызова метода как в примере? <html ng-app="app"> <div ng-controller="SignUpCtrl"> <form novalidate name="signUpForm"> <input type="password" ng-change="checkRepeatePassword" required ng-model="user.password" name="password"><br> <input type="password" ng-change="checkRepeatePassword" required ng-model="user.repeatPassword" name="repeatPassword"> </form> </div> </html> var app = angular.module('app', []); app.controller('SignUpCtrl', ['$scope', '$http', function($scope, $http) { var user = $scope.user; var signUpForm = $scope.signUpForm; var repatePasswordInput = signUpForm.repeatePassword; var passwordInput = signUpForm.password; $scope.checkRepeatePassword = function() { if (repeatPasswordInput.$pristine) return; var error = user.repeatPassword === user.password; signUpForm.$error.repeatPassword = error; repeatePasswordInput.$error.repeatPassword = error; }; }); P.S.: Если кто подскажет более красивое решение валидации паролей, буду еще больше благодарен)) |
Зачем проверять совпадение паролей при каждом клике, если это можно делать при отправке формы?
Если зачем-то нужна такая интерактивность стоит написать отдельную директиву и добавить в нг-модель свой парсер |
Часовой пояс GMT +3, время: 08:55. |