vant/packages/mixins/relation.js
2019-05-06 20:37:09 +08:00

42 lines
735 B
JavaScript

export function ChildrenMixin(parent) {
return {
inject: [parent],
computed: {
parent() {
return this[parent];
},
index() {
return this.parent.children.indexOf(this);
}
},
created() {
const { children } = this.parent;
const index = this.parent.slots().indexOf(this.$vnode);
children.splice(index === -1 ? children.length : index, 0, this);
},
beforeDestroy() {
this.parent.children = this.parent.children.filter(item => item !== this);
}
};
}
export function ParentMixin(parent) {
return {
provide() {
return {
[parent]: this
};
},
data() {
return {
children: []
};
}
};
}