<template> <a :class="[b({ select }), 'van-hairline']" :href="url" @click="onClick" > <van-info :info="info" :class="b('info')" /> {{ title }} </a> </template> <script> import Info from '../info'; import create from '../utils/create'; export default create({ name: 'badge', components: { [Info.name]: Info }, props: { url: String, info: [String, Number], title: String }, inject: ['vanBadgeGroup'], created() { this.parent.badges.push(this); }, beforeDestroy() { this.parent.badges = this.parent.badges.filter(item => item !== this); }, computed: { parent() { if (process.env.NODE_ENV !== 'production' && !this.vanBadgeGroup) { console.error('[Vant] Badge needs to be child of BadgeGroup'); } return this.vanBadgeGroup; }, select() { return ( this.parent.badges.indexOf(this) === +this.parent.activeKey ); } }, methods: { onClick() { const index = this.parent.badges.indexOf(this); this.$emit('click', index); this.parent.$emit('change', index); } } }); </script>