如果不放在 div 中,vuejs 组件会隐藏所有内容
vuejs component hides everything after if not put inside a div
我开始使用带有 parcel 的 vuejs。我有一个主要组件 App.vue,我在 App 的模板中使用 <Hello/>
从中调用子组件 Hello.vue。如果我不将 <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>
这是我在没有用 <div></div>
包装 <Hello/>
的情况下得到的屏幕截图
然后使用 div:
谢谢!
编辑:我在控制台中没有收到错误。我忘了补充一点,我尝试使用 webpack,但没有遇到这个错误,所以它很可能与包裹有关。
当您使用 SFC(单一文件组件)时,您 必须在 <template>
中只有一个元素。然后,在该元素内,您可以拥有任意数量的其他元素。
看看官方文档中的"Example sandbox"简单易行的app:https://vuejs.org/v2/guide/single-file-components.html#Example-Sandbox
文件 ToDoList.vue
就是一个很好的例子:https://codesandbox.io/s/o29j95wx9
如果某些浏览器使用不带结束标记的 <foo />
而不是 <foo></foo>
,则它们无法正确显示元素。
如果项目未使用结束标记呈现,这可能是您的问题。
有些 vue
组件会从您的模板生成结束标记,即使您的源代码中没有它,而其他组件则不会。
我开始使用带有 parcel 的 vuejs。我有一个主要组件 App.vue,我在 App 的模板中使用 <Hello/>
从中调用子组件 Hello.vue。如果我不将 <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>
这是我在没有用 <div></div>
包装 <Hello/>
的情况下得到的屏幕截图
谢谢!
编辑:我在控制台中没有收到错误。我忘了补充一点,我尝试使用 webpack,但没有遇到这个错误,所以它很可能与包裹有关。
当您使用 SFC(单一文件组件)时,您 必须在 <template>
中只有一个元素。然后,在该元素内,您可以拥有任意数量的其他元素。
看看官方文档中的"Example sandbox"简单易行的app:https://vuejs.org/v2/guide/single-file-components.html#Example-Sandbox
文件 ToDoList.vue
就是一个很好的例子:https://codesandbox.io/s/o29j95wx9
如果某些浏览器使用不带结束标记的 <foo />
而不是 <foo></foo>
,则它们无法正确显示元素。
如果项目未使用结束标记呈现,这可能是您的问题。
有些 vue
组件会从您的模板生成结束标记,即使您的源代码中没有它,而其他组件则不会。