Задать вопрос

Почему не передаются данные в форме?

Делаю "несколькооконную" форму
<form ng-submit="form.processForm()" name="form.formData" novalidate>    
      <h1>Sign Up</h1>
            <div ui-view></div>
  </form>

регистрации. На первом шаге, у пользователя спрашивается просто он пользователь или компания. В случае выбора "компания" происходит проверка в контроллере и открывается модальное окно с доп.выбором "form.formData.group2. После выбора в нём, происходит переадресация на следующий стейт с завершением регистрации.
Вопрос - данные "form.formData.group2 в form.formData не попадают. Почему?
Модальное окно открывается с помощью
vm.showModal = function(ev) {
    $mdDialog.show({
                templateUrl: 'dialog.html',
                parent: angular.element(document.body),
                targetEvent: ev,
                     controller: function DialogController($mdDialog) {
                       var vm = this;
                    vm.closeDialog = function() {
                        $mdDialog.hide();
                        $state.go("form.credential");
                    };
                },
                controllerAs: 'dc'
          });
  }
в самом окне
<md-dialog>
     <div layout="row" layout-align="start start">
        <md-radio-group ng-model="form.formData.group2">
            <md-radio-button value="resident">Resident</md-radio-button>
            <md-radio-button value="nonresident">Non resident</md-radio-button>
        </md-radio-group>
       
       <a class="md-button" ng-click="dc.closeDialog()">Next</a> 
      
    </div>
    </md-dialog>

В консоль попадает только
$submitted: true
$valid: true
address: "Mars"
group1: "company"
password: "123456"
username: "email@email.com"

Да, и вывод в консоль не просто form.formData, а вот так:
Object {$$parentForm: Object, $error: Object, $$success: Object, $pending: undefined, $name: "form.formData"…}


Может это быть из-за того, что закрытие диалога сбрасывает полученные значения?
Plnkr
  • Вопрос задан
  • 364 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
dunmaksim
@dunmaksim
Технический писатель
1. Отображайте возможность выбора типа организации прямо в той же форме, где пользователь выбирает, физлицо он или организация. ng-if в помощь.
2. Вызывать диалоговое окно не стоит, а если уж вызываете, сделайте кнопку отмены.
3. В диалоговых окнах Angular Material свой $scope. Для правильной обработки используйте такой код:
$mdDialog.show({
    templateUrl: '/template/dialog.html',
    controller: [ '$scope', '$mdDialog', function($scope, $mdDialog){
        $scope.cancel = $mdDialog.cancel; // Отмена. Ничего сложного.
        $scope.save = function(){
            $mdDialog.hide($scope.model); // Диалог закрывается, promise разрешается моделью
        };
    }]
}).then(function (model) {
    // Та самая модель, которую возвращает $mdDialog. 
    // При использовании метода cancel() выполняет код для reject
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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