
<div id="app"> <my-component></my-component> </div> Vue.component('my-component', { template: '<div>AAAAA</div><div>BBBBB</div>' }); var vm = new Vue({ el: '#app', }); Vue 版本: 2.1.3
问:
为什么页面只渲染了<div>AAAAA</div>? <div>BBBBB</div>哪去了?
假如模板是:CCCCC<div>AAAAA</div>DDDDD,也只渲染出<div>AAAAA</div>? 如果模板没有标签包围:AAAAA,那么直接就渲染为空了!
1 alp 2016-11-25 09:56:52 +08:00 最外层只能有一个标签吧。你在外面加一个 div 试试 |
2 ChefIsAwesome 2016-11-25 09:58:28 +08:00 组件肯定是个单独的封装好的东西。你想想如果你要设计一个封装好的 html 组件,它应该是什么样? 必然是 <MyComponent></MyComponent> 这样的形式。 不管是 vue 、 react ,还是什么其他的,它都肯定是设计成这样的形式。每个组件必须是套在一个 html 里的。 |
3 viko16 2016-11-25 10:02:20 +08:00 是的,每个组件有且仅有一个根节点。 具体说明在这里,这个的确是 guide 文档没写好的地方 http://vuejs.org/v2/guide/migration.html#Fragment-Instances-removed |
4 ChenShao OP @ChefIsAwesome 好吧,我承认我占牛角尖了。谢谢解答。 |
6 viko16 2016-11-25 10:13:27 +08:00 |
7 fanyer 2016-11-25 10:15:19 +08:00 你非要这样写就用 vue2.0 之前的版本, 2.0 之后 vue 组件必须有且仅有一个最顶层祖先节点 |
8 jin5354 2016-11-25 11:23:58 +08:00 你就记得在最外面裹个 div 就好了 |