<div id="app-7">
<ol>
<!--
现在我们为每个 todo-item 提供 todo 对象
todo 对象是变量,即其内容可以是动态的。
我们也需要为每个组件提供一个“key”,稍后再
作详细解释。
-->
<todo-item
v-for="item in groceryList"
v-bind:todo="item"
v-bind:key="item.id">
</todo-item>
</ol>
</div>
Vue.component('todo-item', {
props: ['todo'],
template: '<li>{{ todo.text }}</li>'
})
var app7 = new Vue({
el: '#app-7',
data: {
groceryList: [
{ id: 0, text: '蔬菜' },
{ id: 1, text: '奶酪' },
{ id: 2, text: '随便其它什么人吃的东西' }
]
}
})
v-bind的作用是当父组件的值修改时,子组件会更新。
那这里为什么不能用todo="item",要用 v-bind:todo="item"把父组件的值传过去呢??这跟更新应该没关系吧。ps:本人新手。。
建议你可以再好好看看官方对于v-bind的描述v-bind - vue2.x API
注意加粗的一行,所谓的动态只是其一个功能,还有一个功能就是绑定一个组件prop到表达式你要干的事情,不就是这个吗
话说回来,你写成
todo="item"
这不就是在html标签中,编写了一个自定义属性吗,本质上理解成class="item"
也没啥毛病,这是本质上的不一样。换句话说,你在这个标签中只有用到
v-
开头的属性,在一般情况下才会跟vue对象产生联系