Не удалось идентифицировать имя формы при проверке Angular JS - PullRequest
0 голосов
/ 23 января 2019

У меня проблема с моим кодом. После отправки формы у меня есть функция для проверки правильности, но кажется, что условие моей функции не будет идентифицировать имя моей формы. Вот мой код:

Часть формы шаблона:

<div class="modal-body">
    <form name="form.addeditcoursewareModal">

        <div class="row">
            <div class="small-12 medium-12 large-12 columns">
                <label class="stacked">
                    Question
                    <input name="question" type="text" class="form-field" placeholder="Question" ng-model="$ctrl.question.data.attributes.question" >
                </label>
            </div>
        </div>

        <div class="row">
            <div class="small-12 medium-6 large-6 columns">
                <label class="stacked">
                    Question Type: {{ $ctrl.question.data.attributes.question_type }}
                    <select name="question_type" class="form-field" id="questionType" ng-model="$ctrl.question.data.attributes.question_type" ng-change="$ctrl.getSelectedQuestionType()">
                        <option value="single">Single</option>
                        <option value="multiple">Multiple</option>
                        <option value="true_or_false">True or False</option>
                        <option value="free_text">Free Text</option>
                    </select> 
                </label>
            </div>

Часть проверки:

validateForm(){

    this.validatingForm = true;

    if (this.question.data.attributes.question_type === 'true_or_false'){

        this.question.data.attributes.choices.data[0].attributes.choice = 'True';
        this.question.data.attributes.choices.data[1].attributes.choice = 'False';
    }

    if (this.modalOptions.actionType == 'duplicate'){

        this.question.data.attributes.choices.data.forEach((value) => {
            delete value.id;
        });
    }

    if (this.modalOptions.type === 'multiple'){
        this.validateCheckbox();
    }

    console.log(this);

    if (this.form.addeditcoursewareModal.$invalid || this.invalidMultiple) { // ERROR DETECTED

        // Check for an invalid field
        angular.forEach(this.form.addeditcoursewareModal.$error, (field) => {

            angular.forEach(field, (errorField) => {

                if (errorField.$name === 'dynamicForm'){

                    errorField.dynamicInput.$setTouched();

                } else {
                    // Set field as touched to display invalid field message
                    if (errorField.$name === 'single') {
                        this.invalidRadio = true;
                    }
                    errorField.$setTouched();
                }
            });
        });

        this.validatingForm = false;

    } else {

Вот ошибка, которую я получил: angular.js:14791 TypeError: Cannot read property 'addeditcoursewareModal' of undefined

Я уже пытался переименовать форму, но ошибка та же.

1 Ответ

0 голосов
/ 23 января 2019

Кажется, вы используете контроллер в качестве синтаксиса.Вам нужно будет добавить $ ctrl перед form.addeditcoursewareModal .

<form name="$ctrl.form.addeditcoursewareModal">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...