У меня есть угловая форма, которую я передаю своему контроллеру.
Когда я открываю браузер для проверки формы, он не определен. Я попытался изменить имя формы и перемещать тег формы, чтобы заключить в нее все тело. Вот моя форма:
<form layout-padding id="form-container" ng-controller="RegisterController as RgCtrl" layout="column" ng-cloak name="projectForm">
<div id="content-row-header">What is your email?</div>
<md-input-container class="md-block md-input-focused">
<label>Email</label>
<input required type="email" name="email" ng-model="email"
minlength="10" maxlength="100" ng-pattern="/^.+@.+\..+$/" />
<div ng-messages="projectForm.email.$error" role="alert">
<div ng-message-exp="['required', 'minlength', 'maxlength', 'pattern']">
Your email must be between 10 and 100 characters long and look like an e-mail address.
</div>
</div>
</md-input-container>
<div id="content-row-header">Set a password</div>
<md-input-container class="md-block md-input-focused">
<label>Password</label>
<input required name="password" ng-model="password">
<div ng-messages="projectForm.password.$error">
<div ng-message="required">This is required.</div>
</div>
</md-input-container>
</form>
Вот мой вызов функции:
<md-button id="orange-button" ui-sref="app.unauthenticated.purchase.agent" ng-click="doRegistration(projectForm)" flex>Create Account</md-button>
и вот мой контроллер:
(function () {
'use strict';
angular
.module('app.auth.register')
.controller('RegisterController', RegisterController);
/** @ngInject */
function RegisterController($scope, $auth, $log, $location,$rootScope,$state,app_auth,$stateParams) {
// Data
var vm = this;
// Methods
$scope.doRegistration = function (form) {
console.log(form);
app_auth.register(form.email.$viewValue,form.password.$viewValue,form.passwordConfirm.$viewValue);
};
// $scope.goHome = function () {
/
/ $state.go('app.public');
// };
}
})();
прямо сейчас, когда запускается console.log(form), форма не определена
вы используете директиву. Область действия отличается от контроллеров. Вот почему вы не можете увидеть ссылку на форму.
GO для директивной реализации и добавить:
scope: {
projectForm: '=',
},
ссылка: https://www.sitepoint.com/form-based-directives-angularjs/
name атрибут свяжет контроллер формы с $ scope, поэтому у вас есть name="projectForm"
в вашем контроллере, вы должны иметь возможность использовать $scope.projectForm
проверьте jsfiddle здесь
Если у вас есть условная директива в форме:
<form name="myForm" ng-if="someVariable">
Тогда $scope.myForm
будет неопределенным в вашем контроллере.
Кроме того, вы должны использовать ng-submit.
Регистр Контроллер должен был включать определение формы и функцию, принятую в форме как аргумент
md-input-container