<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 就好了 |