Commit ececc3bb4cbcc1d0298d07aef197afc1bacc61bb
1 parent
a1530fac
update Avatar
Showing
1 changed file
with
23 additions
and
14 deletions
Show diff stats
src/components/avatar/avatar.vue
| 1 | -<template> | |
| 2 | - <span :class="classes"> | |
| 3 | - <img :src="src" v-if="src"> | |
| 4 | - <span :class="[prefixCls + '-string']" v-else-if="$slots.default"><slot></slot></span> | |
| 5 | - <Icon :type="icon" v-else-if="icon"></Icon> | |
| 6 | - </span> | |
| 7 | -</template> | |
| 8 | 1 | <script> |
| 9 | 2 | import Icon from '../icon'; |
| 10 | 3 | import { oneOf } from '../../utils/assist'; |
| ... | ... | @@ -13,7 +6,6 @@ |
| 13 | 6 | |
| 14 | 7 | export default { |
| 15 | 8 | name: 'Avatar', |
| 16 | - components: { Icon }, | |
| 17 | 9 | props: { |
| 18 | 10 | shape: { |
| 19 | 11 | validator (value) { |
| ... | ... | @@ -34,11 +26,6 @@ |
| 34 | 26 | type: String |
| 35 | 27 | } |
| 36 | 28 | }, |
| 37 | - data () { | |
| 38 | - return { | |
| 39 | - prefixCls: prefixCls | |
| 40 | - }; | |
| 41 | - }, | |
| 42 | 29 | computed: { |
| 43 | 30 | classes () { |
| 44 | 31 | return [ |
| ... | ... | @@ -52,8 +39,30 @@ |
| 52 | 39 | ]; |
| 53 | 40 | } |
| 54 | 41 | }, |
| 55 | - methods: { | |
| 42 | + render (h) { | |
| 43 | + let innerNode = ''; | |
| 44 | + | |
| 45 | + if (this.src) { | |
| 46 | + innerNode = h('img', { | |
| 47 | + attrs: { | |
| 48 | + src: this.src | |
| 49 | + } | |
| 50 | + }); | |
| 51 | + } else if (this.icon) { | |
| 52 | + innerNode = h(Icon, { | |
| 53 | + props: { | |
| 54 | + type: this.icon | |
| 55 | + } | |
| 56 | + }); | |
| 57 | + } else if (this.$slots.default) { | |
| 58 | + innerNode = h('span', { | |
| 59 | + 'class': `${prefixCls}-string` | |
| 60 | + }, this.$slots.default); | |
| 61 | + } | |
| 56 | 62 | |
| 63 | + return h('span', { | |
| 64 | + 'class': this.classes | |
| 65 | + }, [innerNode]); | |
| 57 | 66 | } |
| 58 | 67 | }; |
| 59 | 68 | </script> |
| 60 | 69 | \ No newline at end of file | ... | ... |