@Ramyon

Почему не работает $dirty, $invalid, $valid в AngularJS?

Здравствуйте! Пытаюсь в рамках обучения сделать простую форму регистрации, необходимо использовать AngularJS. На форме три поля. Если поля не заполнены, то кнопка "Отправить" неактивна. Если всё заполнили и всё ок, то должен появится alert 'our form is amazing'.
Но от формы никакой реакции, кроме сообщений "Заполните это поле". Кнопка активна всегда, а алерт не появляется.
Подскажите, в чем проблема?
UPD. Проблема наблюдается при запуске из Visual Studio. Если использовать всякие онлайн инструменты, то там всё ок. Но нужно сделать именно как проект в VS. Я пробовал скачивать готовые подобные проекты и запускать их из VS - всё было в порядке.
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Сохранение пользователя</title>
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" />
</head>
<body>
    <div ng-app="saveUserApp" ng-controller="saveUserController">
        <div class="container">
            <div class="col-sm-4 col-sm-offset-3">
                <h2>Сохранение пользователя</h2>
                <form name="form" ng-submit="save()">
                    <div class="form-group" ng-class="{ 'has-error': form.login.$dirty && form.login.$error.required }">
                        <label for="login">Логин</label>
                        <input type="text" name="login" id="login" ng-model="login" class="form-control" required/>
                    </div>
                    <div class="form-group" ng-class="{ 'has-error': form.firstName.$dirty && form.firstName.$error.required }">
                        <label for="firstName">Имя</label>
                        <input type="text" name="firstName" id="firstName" ng-model="firstName" class="form-control" required/>
                    </div>
                    <div class="form-group" ng-class="{ 'has-error': form.lastName.$dirty && form.lastName.$error.required }">
                        <label for="lastName">Фамилия</label>
                        <input type="text" name="lastName" id="lastName" ng-model="lastName" class="form-control" required/>
                    </div>
                    <div class="form-actions">
                        <button type="submit" ng-disabled="form.$invalid" class="btn btn-primary btn-lg btn-block">Отправить</button>
                    </div>
                </form>
            </div>
        </div>
    </div>
<script src="//code.jquery.com/jquery-3.1.1.min.js"></script>
    <script src="//code.angularjs.org/1.6.0/angular.min.js"></script>
    <script src="//code.angularjs.org/1.6.0/angular-route.min.js"></script>
    <script src="//code.angularjs.org/1.6.0/angular-cookies.min.js"></script>
</body>
    </html>


var saveUserApp = angular.module('saveUserApp', []);
saveUserApp.controller('saveUserController', function ($scope) {
    $scope.save = function () {
        if ($scope.form.$valid) {
            alert('our form is amazing');
        }
    }
})
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
@Ramyon Автор вопроса
Во-первых, я не добавил свой скрипт в тэг script, и во-вторых, это нужно сделать после добавления ангуляра
<script src="//code.angularjs.org/1.7.9/angular.min.js"></script>
    <script src="//code.angularjs.org/1.7.9/angular-route.min.js"></script>
    <script src="//code.angularjs.org/1.7.9/angular-cookies.min.js"></script>
    <script src="js/controllers/saveUser.js"></script>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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