Угловая форма не определена в контроллере

0

У меня есть угловая форма, которую я передаю своему контроллеру.

Когда я открываю браузер для проверки формы, он не определен. Я попытался изменить имя формы и перемещать тег формы, чтобы заключить в нее все тело. Вот моя форма:

         <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), форма не определена

  • 0
    $ State.go ( 'app.public'); следует прокомментировать?
  • 0
    только что опубликовал ответ, пожалуйста, вы можете добавить фрагмент md-input-container
Теги:
angular-material

4 ответа

0
Лучший ответ

вы используете директиву. Область действия отличается от контроллеров. Вот почему вы не можете увидеть ссылку на форму.

GO для директивной реализации и добавить:

scope: {
  projectForm: '=',
},

ссылка: https://www.sitepoint.com/form-based-directives-angularjs/

0

name атрибут свяжет контроллер формы с $ scope, поэтому у вас есть name="projectForm" в вашем контроллере, вы должны иметь возможность использовать $scope.projectForm

проверьте jsfiddle здесь

https://jsfiddle.net/hurricanew/6tqywue6/

0

Если у вас есть условная директива в форме:

<form name="myForm" ng-if="someVariable">

Тогда $scope.myForm будет неопределенным в вашем контроллере.

Кроме того, вы должны использовать ng-submit.

-1

Регистр Контроллер должен был включать определение формы и функцию, принятую в форме как аргумент

Ещё вопросы

Сообщество Overcoder
Наверх
Меню