Vuejs:模板只有一个根元素,但编译失败说它应该只有一个根元素

Posted

技术标签:

【中文标题】Vuejs:模板只有一个根元素,但编译失败说它应该只有一个根元素【英文标题】:Vuejs: Template only has one root element, but fails to compile saying it should only have one root element 【发布时间】:2018-02-10 20:34:10 【问题描述】:

我的组件模板中有这段代码

<template>
  <div>
    <div class="row note"  v-for"note in notes">
      <div class="col-sm-3 col-md-2">
        <div class="thumbnail">
          <img src="/images/alec-joy.jpg">    
        </div>
      </div>
      <div class="col-sm-9 col-md-10">
        <h4>
          note.author - 
          <small>note.author.role</small>
          <small class="pull-right">note.created_at</small>
        </h4> 
          <p>note.body</p>
      </div>
    </div>
    <form action="#" @submit.prevent="createNote()">
      <div class="row">
        <div class="col-sm-8 col-sm-offset-2">
          <div class="form-group">
            <textarea rows="3" v-model="note.body" class="form-control"></textarea>
          </div>
        </div> 
        <div class="col-sm-2">
          <button type="submit" class="btn btn-primary">Add Note</button>
        </div>
      </div>
    </form>
  </div>
</template>

我的 webpack 构建失败并出现以下错误

组件模板应该只包含一个根元素。如果您在多个元素上使用 v-if,请改用 v-else-if 链接它们

但我有点困惑。我有一个包装 DIV 作为根元素,并且只有其中一个。

当我删除表单时,模板编译时没有错误,因此它似乎将表单检测为根元素,但它显然在我的根 DIV 中。

【问题讨论】:

通常我会投票关闭一个错字问题,但这个错误不是你所期望的,我认为这可以帮助未来的人们。 【参考方案1】:

你有v-for"note in notes",应该是v-for="note in notes"

我的猜测是编译器只是忽略了开始 &lt;div&gt; 标记,因此它认为 v-for 的结束 &lt;/div&gt; 正在关闭根 &lt;div&gt;

【讨论】:

以上是关于Vuejs:模板只有一个根元素,但编译失败说它应该只有一个根元素的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS 错误:指令“XXXXXX”的模板必须只有一个根元素

VueJS:通过路由器视图将数据从根元素传递到子组件

VueJS 编译失败:找不到依赖项

VueJS 如何编译服务器端远程模板异步组件+简单方法

vuejs应用程序中的粘性页脚[重复]

VueJs 2.x 更新