父传值到子组件
<div id="app">
<ul>
<school schoolname="清华"></school>
<school :schoolname="'北大'"></school>
<school :schoolname='schoolData[0]'></school>
<school v-for="item,index in schoolData" :schoolname='item' :key='"for" + index'></school>
</ul>
</div>
<script type="text/javascript">
Vue.component('school',{
props:['schoolname'],
template:`
<li>学校名称:{{schoolname}}</li>
`
});
var app = new Vue({
el: "#app",
data: {
schoolData: ['清华', '北大', '中大']
}
})
</script>
子组件传值到父元素
<div id="app">
<ul>
<school v-for="item, index in schoolList" :school-name="item" @parentclick="selected" :key='index + "a"'></school>
</ul>
<h2>选中的学校:{{selectedSchool}}</h2>
</div>
<script type="text/javascript">
Vue.component('school', {
props:['schoolName'],
template: `
<li>学校名称:{{schoolName}}
<button type="button" @click='childClick(schoolName)'>选中</button>
</li>
`,
methods: {
childClick: function(schoolName) {
console.log(this)
this.$emit('parentclick', schoolName)
}
}
});
var app = new Vue({
el: '#app',
data: {
schoolList:['清华','北大','浙大',"中大"],
selectedSchool:''
},
methods: {
selected: function(school) {
this.selectedSchool = school
}
}
})
</script>
子组件通过 $parent 和$root 可以直接访问父元素的数据方法