Компонент vuejs скрывает все после, если не помещен в div - PullRequest
0 голосов
/ 01 мая 2019

Я начал использовать vuejs с посылкой. У меня есть основной компонент App.vue, из которого я вызываю подкомпонент Hello.vue, используя <Hello/> в шаблоне приложения. У меня странная ошибка, если я не помещаю <Hello/> внутри тега div, все, что появляется в html, не отображается. Код ниже:

index.js

import Vue from "vue";
import App from "./App";

new Vue({
  el: "#app",
  components: { App },
  template: "<App/>"
});

App.vue

<template>
  <div id="app">
    <h3>bla bla</h3>

    <div><Hello/></div>
    <!-- if not put inside a div, hides everything after-->

    <h2>test</h2>
    <p>kldsfnlkdsjfldsfds</p>
    <h5>skjdnsqkfdnlkdsqf</h5>
  </div>
</template>

<script>
import Hello from "./components/Hello";

export default {
  name: "App",
  components: {
    Hello
  }
};
</script>

<style>
</style>

Hello.vue

<template>
  <div>
    <h1>{{ message }}</h1>
    <h2>Hello {{ person.firstname}} {{person.lastname}}</h2>
    <label>
      Firstname:
      <input type="text" v-model="person.firstname">
    </label>
    <label>
      Lastname:
      <input type="text" v-model="person.lastname">
    </label>
    <label>
      Message:
      <input type="text" v-model="message">
    </label>
  </div>
</template>

<script>
export default {
  data() {
    return {
      person: {
        firstname: "John",
        lastname: "Doe"
      },
      message: "Welcome !"
    };
  }
};
</script>

<style>
</style>

Вот скриншот того, что я получаю без упаковки <Hello/> с <div></div> without a div А потом с div: with a div

Спасибо!

РЕДАКТИРОВАТЬ: я не получаю ошибку в консоли. Я забыл добавить, что я пробовал с веб-пакетом, и я не получаю эту ошибку, так что это, скорее всего, связано с посылкой.

Ответы [ 2 ]

1 голос
/ 01 мая 2019

Некоторые браузеры не отображают элементы правильно, если они используют <foo /> без закрывающего тега вместо <foo></foo>.

Если элементы не отображаются с закрывающим тегом, это может быть вашей проблемой.

Некоторые vue компоненты сгенерируют закрывающий тег из вашего шаблона, даже если у вас его нет вваш источник, а другие не будут.

1 голос
/ 01 мая 2019

Когда вы используете SFC (Single File Component), у вас должен быть только один элемент внутри <template>. Затем внутри этого одного элемента вы можете иметь столько других элементов, сколько захотите.

Взгляните на "Пример песочницы" Простое в использовании приложение в официальной документации: https://vuejs.org/v2/guide/single-file-components.html#Example-Sandbox

Файл ToDoList.vue является хорошим примером здесь: https://codesandbox.io/s/o29j95wx9

...