@yazux

Как вывести несколько строк в компоненте vue.js?

Сегодня начал изучение vue.js, столкнулся с проблемой, гугление не дало результатов.
В общем, есть следующий код:
var login = Vue.component('login', {
    template: '#login-form',
    data: function(){
      return {
        name: '',
        password: '',
        labelName: 'Имя',
        labelPassword: 'Пароль',
        labelSubmit: 'Отправить',
      }
    },
    created: function(){ }
  });

  new Vue({ el: '#vue-app', components: {login: login}, });


Данный компонент планирую использовать как форму авторизации.
Вывод шаблона:
<div id="vue-app">
        <login></login>
      </div>

Сам шаблон, для теста, в таком виде работает:
<template id="login-form">
      <div>@{{ labelName }}</div>
</template>

Но стоит добавить к выводу ещё что-то, как все крашится:
<template id="login-form">
      <div>@{{ labelName }}</div>
     <div>@{{ labelPassword }}</div>
</template>


Получаю ошибку: Error compiling template: Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.

Подскажите, что я делаю не так.
  • Вопрос задан
  • 1221 просмотр
Решения вопроса 3
Fragster
@Fragster
помогло? отметь решением!
<div>
      <div>@{{ labelName }}</div>
     <div>@{{ labelPassword }}</div>
</div>

exactly one root element
Ответ написан
Комментировать
sfi0zy
@sfi0zy Куратор тега JavaScript
Creative frontend developer
Подскажите, что я делаю не так. Component template should contain exactly one root element.

У вас ошибка довольно простая: в переводе звучит как "шаблон компонента может иметь только один корневой элемент":
<template id="login-form">
<div>
    <div>@{{ labelName }}</div>
    <div>@{{ labelPassword }}</div>
</div>
</template>
Ответ написан
@yazux Автор вопроса
Все, разобрался в проблеме. В общем, если кто столкнется, с этим вопросом на старте: внутри шаблона должен быть 1 html основной компонент, а в нем уже все что вам надо, Пример:
<template id="login-form">
      <div>
          <div>@{{ data.labelName }}</div>
          <div>@{{ data.labelPassword }}</div>
      </div>
</template>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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