При вставке нового компонента все остальное исчезает внутри приложения. - PullRequest
0 голосов
/ 07 сентября 2018

Я всегда создаю свои SPA-приложения с помощью vue-cli.

На этот раз я создаю небольшой проект и включаю Vue с тегом script.

Но я не понимаю следующее поведение.

// app.js

Vue.component('todo-item', {
  template: `<div>Todo Component!</div>`
})

var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue App!'
  }
})

HTML index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Title</title>
</head>
<body>

  <div id="app">

    {{ message }}

    <div>
      Just some content...
    </div>

  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  <script src="./js/app.js"></script>
</body>
</html>

Результат таков:

enter image description here

Теперь я попытаюсь добавить '<todo-item />' Компонент внутри HTML:

<div id="app">

    {{ message }}

    <todo-item />

    <div>
      Just some content...
    </div>

  </div>

Текст «Просто некоторый контент ...» исчез:

enter image description here

Что я делаю не так?

1 Ответ

0 голосов
/ 07 сентября 2018

TL; DR;

вместо <todo-item/> используйте <todo-item></todo-item>

Нескомпилированный vue.js не поддерживает закрывающиеся теги html.

см. Руководство по стилю:

К сожалению, HTML не позволяет самозакрывающимся пользовательским элементам - только официальные «пустые» элементы. Вот почему стратегия только возможно, когда компилятор шаблона Vue может достичь шаблона раньше DOM, затем используйте HTML, соответствующий спецификации DOM.

https://vuejs.org/v2/style-guide/#Self-closing-components-strongly-recommended

и проблемы в github:

https://github.com/vuejs/vue/issues/1036
https://github.com/vuejs/vue/issues/8664

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...