vue.js组件中的v-for使用问题

在vue.js的官方文档中,组件部分的介绍实例为如下:
//定义组件部分
Vue.component('todo-item', {
  // todo-item 组件现在接受一个
  // "prop",类似于一个自定义特性。
  // 这个 prop 名为 todo。
  props: ['todo'],
  template: '
  • {{ todo.text }}
  • ' })
    //调用该组件的vue中的template为:
     
    //调用该组件的vue中的vue实例中的data为:
    data: {
        groceryList: [
          { id: 0, text: '蔬菜' },
          { id: 1, text: '奶酪' },
          { id: 2, text: '随便其它什么人吃的东西' }
        ]
      }


    上述实例中将循环放在了组件上,而不是组件内部的template中。传入template的为groceryList的每一项。
    尝试在调用时放入总的数据,grocery List,然后在组件上进行循环,代码如下:

    调用组件的vue的template中向
    
    //定义组件中 Vue.component("todo-item",{ props:['todo'], template:`
  • {{item.text}}
  • ` })

    但是运行时出现错误提示:
    [Vue warn]: Error compiling template:

    li v-for="item in todo">{{item.text}}/li>

    - Cannot use v-for on stateful component root element because it renders multiple elements.

    上述提示说明:在根元素上不能使用V-for ,因为v-for会进行循环,返回多个
  • 。而在组件中template标签下面有且只能有一个根元素,例如下面的形式:

    而直接在
  • 上进行v-for循环,则会变成下列形式
    所以会报错。如果想要在li上进行循环,可以在定义组件的template时,在li外层包裹一个标签。
    Vue.component("todo-list",{
    props:['todo'],
    template:`
    1. {{item.text}}
    ` })
    其他不用更改,即可实现。




  • 你可能感兴趣的:(Vue.js)