@barder

Vue JS и VALUE в input как подружить?

Привет всем.
Кода передадаю ID элемента - он видит название этим я убедился <? echo $editElName ?>
но в input не передается(не заполняется поле)
если я из инпута убираю v-model="name", то название встает нормально, но тогда vue скрипт не работает на поле.
Сам код:
<?     $editPage = $APPLICATION->GetCurPageParam();
        $arElementID = preg_replace("/[^0-9]/", '', $editPage);
        if (!empty($arElementID)) { ?>
            <input type="hidden" name="ELEMENT_ID" value="<?= $arElementID ?>">
            <?
            //ПОЛУЧАЕМ ДАННЫЕ ОБ ЭЛЕМЕНТЕ
            $editElement = CIBlockElement::GetList(
                Array(),
                Array("IBLOCK_ID" => $IBLOCK_ID, "ID" => $arElementID),
                false,
                false,
                Array(
                    'NAME'
                )
            );
            while ($ar_fields = $editElement->GetNext()) {
               $editElName =  $ar_fields['NAME'];
              
            }
        }
        ?>

<div class="app">
<form id="app" @submit="checkForm" name="add_my_bulletin" action="add_form_result.php" method="POST" enctype="multipart/form-data">
		<p v-if="errors.length">
			<strong>Пожалуйста исправьте указанные ошибки:</strong>
			<ul>
				<li v-for="error in errors" class="error"><strong>{{ error }}</strong></li>
			</ul>
		</p>	
		<div class="form-group">
			<label for="name" class="col-sm-9 col-form-label col-form-label-sm"><strong>Название(<font color="red">Обязательно</font>):</strong></label>
			<div class="col-12">
				<input v-model="name" id="name" type="text" name="name" maxlength="255" value="<?=$editElName ?>" class="form-control form-control-sm" placeholder="Введите название">
			</div>
		</div>

			<div class="form-group">
				<div class="col-9">
					<input class="btn btn-primary pull-right" type="submit" value="Отправить">
					<p v-if="errors.length">
						<strong>Пожалуйста исправьте указанные ошибки:</strong>
						<ul>
							<li v-for="error in errors" class="error"><strong>{{ error }}</strong></li>
						</ul>
					</p>		
				</div>
				<script>
					const app = new Vue({
						el: '#app',
						data: {
							errors: [],
							name: null
						},
						methods: {
							checkForm: function (e) {
								if (this.name) {
									return true;
								}

								this.errors = [];

								if (!this.name) {
									this.errors.push('Требуется указать название.');
								}
								e.preventDefault();
							}
						}
					})
				</script>
			</div>
               </form>
	</div>


что можно сделать?
  • Вопрос задан
  • 1476 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вы не понимаете, как работает реактивность Vue.
v-model устанавливает двустороннюю связь между значением поля input и элементом данных name.
При инициализации приложения вы объявляете элемент name со значением null. Это значение и записывается как значение input'а.
Задавайте в данных нужное значение.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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