目标: 通过手风琴的小实例,了解vue的父子组件的事件传递方式(其中一种)。vue实例唯一标识_uid的实际使用。
建议阅读时间: 3分钟
手风琴,涉及到两个组件,
和
, 要实现的功能无非两点:
小知识: 每个Vue实例都会有一个递增的id,可以通过this._uid获取
代码实现:
1. 定义一个父组件Collpase,实现以下功能
挂载cut方法,传入被点击的实例的Id, 遍历子组件,确认是谁被点击了
没有被点击的子组件,其show属性置位false
// 引入vue
// 定义个父组件collapse
Vue.component('Collapse', {
methods: {
cut(childId) {
this.$children.forEach(child => {
console.log('ci', child._uid)
if(child._uid !== childId) {
child.show = false;
}
});
}
},
template: `
})
复制代码
2. 定义一个子组件CollpaseItem,实现以下功能
接受一个tile,作为标题
data中维护一个show属性,控制content的显示隐藏
当title被点